** Ich habe versucht, pyQuery zu verwenden. ** ** ** Ich habe auch eine Bibliothek namens Scrapy gefunden, aber sie scheint problematisch zu sein, da sie Crawler enthält, also vermeide ich sie. beautifulsoup sieht gut aus, aber dieses Mal werde ich pyQuery ausprobieren.
$ yum install libxml2-devel libxslt-devel
$ pip install pyquery
Da pyQuery libxml2 verwendet, installieren Sie es zuerst. Wenn Sie kein Pip haben, installieren Sie es ebenfalls.
Ich habe versucht, die Erdbebeninformationsseite mit dem Beispielcode [hier] [Ref1] zu kratzen.
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()
Dieser Code druckt den Inhalt des <tr>
-Tags unter der class =" infotable "
in einer for
-Schleife.
Als ich die Konfiguration von HTML mit dem Entwicklertool von Chrome überprüfte, war es wie folgt.
Ich habe die folgenden Erdbebeninformationen gehorsam mit python pqsample.py
erhalten. Sicher einfach.
Datum und Uhrzeit der Informationsansage Datum und Uhrzeit des Auftretens Erdbebenzentrum Ortsname Größe Maximale seismische Intensität 03. Dezember 2014, 14:38 Uhr Um 14:32 Uhr am 3. März 2014 Präfektur Nord-Nagano M1.6 Erdbebenintensität 1 03. Dezember 2014 06:03 Gegen 06:00 Uhr in der 3. Präfektur Nord-Nagano M2.0 Seismische Intensität 1
Ich fand, dass es funktioniert, also fing ich an, die Lieblingsseite zu kratzen. Öffnen Sie die gewünschte Seite in Chrom, drücken Sie im Fenster der Entwicklertools (STRG-Umschalt-I) auf die Lupenmarkierung und klicken Sie auf das Element, das Sie untersuchen möchten. Der DOM-Baum wird wie unten gezeigt angezeigt. (Wenn Sie ein Firefox sind, können Sie dies im Inspektor überprüfen.)
Bei dieser Baumstruktur sollten Sie die Tags "
for
gedreht habe.
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()
Dieses Mal wollte ich einen peruanischen Rang, also gab ich den Ländercode / PE
an. Wenn Sie hier Ihren bevorzugten Ländercode angeben, können Sie die Seite dieses Landes abrufen. Der Code durchläuft 20 HTML-Seiten.
Führen Sie also python alexa.py
aus.
csv ist fertig. Großer Erfolg. Danach ist es nützlich, eine Tabelle mit Excel zu erstellen oder einen Verbindungstest mit Curl durchzuführen.
[Scraping mit Python (Pyquery)] [Ref1] [Ref1]:http://d.hatena.ne.jp/kouichi501t/20130407/1365328955
Recommended Posts