Résumé Xpath lors de l'extraction de données d'un site Web avec Python Scrapy

Vous pouvez utiliser le module Python Scrapy pour récupérer automatiquement les données du site Web en séquence lorsque vous parcourez les liens.

Pour extraire les données souhaitées du site Web, vous devez spécifier ** l'emplacement des données souhaitées **.

Ce que vous spécifiez s'appelle ** Selector **. Dans Scrapy, il existe des méthodes de spécification css et xpath, mais cette fois je vais vous expliquer comment utiliser xpath.

Préparation

Installez Scrapy avec pip.

commandline


$ pip install scrapy

Scrapy Shell Scrapy a un outil appelé Scrapy shell qui vous permet de vérifier de manière interactive l'extraction des données.

commandline


scrapy shell "http://hogehoge.com/hoge/page1"

Si vous spécifiez like, le shell interactif de python sera lancé avec l'instance ** response ** contenant les informations de la page spécifiée. Lors du développement d'une araignée (robot d'exploration), nous extrairons également les données de cette instance de réponse.

Entraine toi

méthode de réponse xpath

En gros, nous allons extraire les données avec une telle syntaxe.

shell


>>> response.xpath('//title/text()')
    [<Selector (text) xpath=//title/text()>]

Dans cet exemple, le corps (text ()) de toutes les balises de titre (// titre) dans le texte html reçu est extrait. Cependant, s'il est laissé tel quel, la valeur de retour est un sélecteur comme décrit ci-dessus. Utilisez .extract () pour obtenir les caractères.

shell


>>> response.xpath('//title/text()').extract()
    [u'exsample title']
Stringification des données extraites

Puisque les données extraites sont une liste, faites-en une chaîne de caractères en spécifiant un tableau.

shell


>>> response.xpath('//title/text()').extract()[0]
    u'exsample title'

Au fait, cette "chaîne de caractères" signifie unicode. python gère les chaînes en unicode.

Si vous visitez plusieurs sites Web, le xpath que vous spécifiez peut ne pas être trouvé nulle part. Dans cet état, si vous spécifiez le 0ème response.xpath (hoge) .extract [0] du tableau comme ci-dessus, une erreur se produira, donc pour éviter cela

shell


>>> item['hoge'] = response.xpath('//title/text()').extract_first()

Etc.

Aussi, si vous voulez concaténer toutes les séquences obtenues [u'hoge1 ', u'hoge2', u'hoge3 '], etc., et les obtenir sous forme de chaîne de caractères.

shell


>>> extract_list = [u'hoge1', u'hoge2', u'hoge3']
>>> ''.join(extract_list)
    u'hoge1hoge2hoge3'

Tu peux le faire.

collection xpath

xpath Contenu
//div Toutes les balises div
//div[@class='aaa'] Dans toutes les classes'aaa'Balise div avec
//div[@id='aaa']/text() Tout, id'aaa'Balise div->Corps
//a[text()='aaa']/@href Tout le texte'aaa'Une étiquette->Valeur d'attribut Href de
//div/tr Toutes les divs->Balise Tr de l'élément enfant
//table/tr/th[text()='price']/following-sibling::td[1]/text() Toutes les tables->Cette ligne->Champ appelé prix->Premier des éléments de données->Corps

Le xpath pour la dernière table est pratique car vous pouvez obtenir la valeur de la table sur la page Web en spécifiant le champ (prix dans le cas ci-dessus, la partie montant). Si td est spécifié, l'élément td sur la même ligne sera de plus en plus utilisé, donc le premier est extrait comme td [1]. C'est «[1]». Ce n'est pas «[0]».

Recommended Posts

Résumé Xpath lors de l'extraction de données d'un site Web avec Python Scrapy
[Note] Obtenir des données de PostgreSQL avec Python
Extraire des données d'une page Web avec Python
Analyse de données avec Python
BigQuery-Python s'est avéré utile lors de l'utilisation de BigQuery à partir de Python
Comment récupérer des données d'image de Flickr avec Python
J'ai essayé de collecter des données sur un site Web avec Scrapy
[Bases de la science des données] Collecte de données depuis RSS avec python
Obtenir des données de la base de données via ODBC avec Python (Access)
Exemple de données créées avec python
Un mémo qui lit les données de dashDB avec Python et Spark
Problème de ne pas connaître les paramètres lors de l'utilisation de Blender à partir de Python
Grattage festif avec Python, scrapy
Remarques sur l'importation de données depuis MySQL ou CSV avec Python
Obtenez des données Youtube avec python
Script lors de l'exécution de Scrapy à partir d'un script
20200329_Introduction à l'analyse de données avec Python 2nd Edition Personal Summary
Mémo récapitulatif des types de données Python
Erreur lors de la lecture avec python
Obtenez des données de l'API d'analyse avec le client API Google pour python
Exemple de résumé de code lorsque vous travaillez avec des feuilles de calcul Google de Google Colab
Résumé de base de la manipulation de données avec Python Pandas - Première moitié: création et manipulation de données
Avec skype, notifiez avec skype de python!
Lire des données json avec python
Comment éviter la duplication des données lors de la saisie de Python vers SQLite.
Introduction à l'analyse de données par Python P17-P26 [ch02 1.usa.gov données de bit.ly]
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Manipulation des données Kintone avec le pilote ODBC Python & C Data d'AWS Lambda
Python: exclure les balises des données html
Appeler C depuis Python avec DragonFFI
Frappez les données du trésor de Python Pandas
Utilisation de Rstan de Python avec PypeR
Installez Python à partir des sources avec Ansible
[Python] Obtenez des données économiques avec DataReader
Structure de données Python apprise avec la chimioinfomatique
Exécutez Aprili depuis Python sur Orange
Appelez python de nim avec Nimpy
Visualisez facilement vos données avec Python seaborn.
Traiter les données Pubmed .xml avec python
Analyse de données à partir de python (visualisation de données 1)
Précautions lors de l'utilisation de phantomjs de python
Quand matplotlib ne fonctionne pas avec python2.7
Charger fbx depuis python avec cinema4d
Lors de l'utilisation de MeCab avec python dans virtualenv
Précautions lors de l'utilisation de six avec Python 2.5
Analyse de données à partir de python (visualisation de données 2)
Application de Python: Nettoyage des données Partie 2: Nettoyage des données à l'aide de DataFrame
[Python] Formater quand to_csv avec des pandas
Comment gérer l'erreur OAuth2 lors de l'utilisation des API Google à partir de Python
Intégration de données depuis l'application Python sur Linux vers Amazon Redshift avec ODBC
Intégration de données depuis l'application Python sur Windows vers Amazon Redshift avec ODBC
Copier des données d'Amazon S3 vers Google Cloud Storage avec Python (boto)
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (4. Structure des données)
Conseils (structure de données) à connaître lors de la programmation de compétitions avec Python2
Obtenez des données supplémentaires vers LDAP avec python
Construction de pipeline de données avec Python et Luigi
Obtenir le code HTML de l'élément avec du sélénium Python
Extrait de code pour une recherche de bits complète avec python
Lire un fichier audio à partir de Python avec interruption
Créez wordcloud à partir de votre tweet avec python3