** 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