** J'ai essayé d'utiliser pyQuery. ** ** J'ai également trouvé une bibliothèque appelée Scrapy, mais cela semble gênant car elle inclut un robot d'exploration, donc je l'évite. beautifulsoup a l'air bien, mais cette fois je vais essayer pyQuery.
$ yum install libxml2-devel libxslt-devel
$ pip install pyquery
Puisque pyQuery utilise libxml2, installez-le d'abord. Si vous n'avez pas de pip, installez-le également.
J'ai essayé de gratter le site d'information sur le tremblement de terre avec l'exemple de code de [here] [Ref1].
pqsample.py
import pyquery
query = pyquery.PyQuery("http://www.jma.go.jp/jp/quake/quake_local_index.html", parser='html')
for tr in query('.infotable')('tr'):
print query(tr).text()
Ce code imprime le contenu de la balise <tr>
sous la class =" infotable "
dans une boucle for
.
Lorsque j'ai vérifié la configuration de html avec l'outil de développement de chrome, c'était comme suit.
J'ai obtenu les informations de tremblement de terre suivantes docilement avec python pqsample.py
. Certainement facile.
Date et heure de l'annonce des informations Date et heure de l'occurrence Centre du séisme Nom du lieu Magnitude Intensité sismique maximale 03 décembre 2014 14:38 Vers 14:32 le 3 mars 2014 Préfecture de Nagano Nord M1.6 Intensité sismique 1 03 décembre 2014 06:03 Vers 06:00 sur la 3ème Préfecture Nord de Nagano M2.0 Intensité sismique 1
J'ai trouvé que cela fonctionnait, alors j'ai commencé à gratter le site préféré. Ouvrez la page souhaitée dans chrome, appuyez sur la marque de la loupe dans la fenêtre des outils de développement (CTRL-Maj-I), puis cliquez sur l'élément que vous souhaitez examiner. L'arborescence DOM s'affiche comme illustré ci-dessous. (Si vous êtes un Firefox, vous pouvez le vérifier dans l'inspecteur.)
Avec cette arborescence, vous devez lister les balises <li>
en utilisant le class =" site-listing "
comme clé. Le rang est dans count
, et le domaine est dans la balise <a>
sous desc-paragraph
. J'ai écrit le code pour les afficher en csv en tournant for
.
alexa.py
import pyquery
for page in range(20):
query = pyquery.PyQuery("http://www.alexa.com/topsites/countries;" + str(page) + "/PE", parser='html')
for li in query('.site-listing')('li'):
print query(li)('.count').text() + ", " + query(li)('.desc-paragraph')('a').text()
Cette fois, je voulais un rang péruvien, j'ai donc spécifié la page de code de pays / PE
. Si vous spécifiez ici votre code de pays préféré, vous pouvez obtenir la page de ce pays. Le code boucle 20 pages HTML.
Alors lancez python alexa.py
.
csv est terminé. Grand succès. Après cela, il est utile pour créer une table avec Excel en utilisant ceci, ou pour le test de connexion avec curl.
-Confortable avec le combo chrome + pyQuery, vous pouvez facilement gratter les informations obtenues en coupant et collant. -Bien que l'API d'Alexa puisse être utilisée depuis AWS, c'est bien car il semble que la liste TOP ne puisse pas être obtenue. ・ Je rédigerai bientôt un volume de test de connexion facile avec curl.
[Scraping avec Python (pyquery)] [Ref1] [Ref1]:http://d.hatena.ne.jp/kouichi501t/20130407/1365328955
Recommended Posts