IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

Scrapy : petit probleme


Sujet :

Interfaçage autre langage Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2022
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Scrapy : petit probleme
    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.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Si la ligne du CSV est vide, on peut supposer que les chaînes de caractères retournées sont vides (ce qui se teste).
    Pour remplacer un(ou plusieurs) caractère(s), la méthode .replace fonctionne très bien.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 001
    Points : 9 388
    Points
    9 388
    Par défaut
    hello,
    tu peux faire comme ceci par exemple :
    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
    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()
                if produit_name is not None:
                    produit_name = produit_name.replace('"', ' Pouces')
                    yield {
                    'nom': produit_name,
                    'prix': produit_prix
                    }
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

Discussions similaires

  1. Petit problème de fork
    Par osmose22 dans le forum Linux
    Réponses: 7
    Dernier message: 18/03/2007, 21h10
  2. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  3. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19
  4. petit probleme de requete
    Par nico33307 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/08/2004, 11h36
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo