Bonjour à tous,
Depuis quelques jours, je découvre le "scraping" web et je me suis intéressé à Scrapy.
J'essaie de faire quelque chose de très simple :
- aller sur la page d'un grand site marchand (url en dur)
- écrire dans un csv les informations sur : "Le nom du produit", "Son prix".
Mon petit bout de code fonctionne sauf que :
- j'ai 2 ou 3 enregistrements (lignes) sans données que je ne voudrais pas afficher. Et dans le csv, cela apparait comme une ligne vide.
J'ai essayé de supprimer ces lignes lors du traitement xpath mais je n'ai pas réussi
- je voudrais pouvoir supprimer des caractères dans le nom comme par exemple le caractère " (qui correspond au nombre de pouce pour une tablette).
Là aussi, j'ai essayé du regex ... et impossible d'y arriver.
Si vous avez une piste, je suis preneur.
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import scrapy class TestSpiderSpider(scrapy.Spider): name = 'test_spider' allowed_domains = ['www.amazon.com'] start_urls = ['https://www.amazon.fr/s?k=tablette&__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=32W5UJHMF40X9&sprefix=tablett%2Caps%2C97&ref=nb_sb_noss_2'] def parse(self, response): produits = response.xpath("//*[@data-asin]") for produit in produits: produit_name = produit.xpath(".//h2//a//text()").get() produit_prix = produit.xpath(".//span[@class='a-price-whole']//text()").get() yield { 'nom':produit_name, 'prix':produit_prix }
Merci pour votre aide.
Partager