Ich möchte die täglichen Sonnenaufgangs- / Sonnenuntergangszeiten von einer Website abrufen. Ist es möglich, Webinhalte mit Python zu kratzen? Welche Module werden verwendet? Gibt es ein Tutorial?
python
screen-scraping
eozzy
quelle
quelle
Antworten:
Verwenden Sie urllib2 in Kombination mit der brillanten BeautifulSoup- Bibliothek:
quelle
soup = BeautifulSoup(requests.get('http://example.com').text)
backticks
den Code vergessen und ihn in einen Link umgewandelt. Vielen Dank!Ich würde Scrapy wirklich empfehlen.
Zitat aus einer gelöschten Antwort:
quelle
Ich habe Skripte aus meiner Web-Scraping-Arbeit in dieser Bit-Bucket-Bibliothek gesammelt .
Beispielskript für Ihren Fall:
Ausgabe:
quelle
Ich würde dringend empfehlen, sich Pyquery anzuschauen . Es verwendet eine jquery-ähnliche (auch bekannt als css-ähnliche) Syntax, die es denjenigen, die aus diesem Hintergrund kommen, wirklich einfach macht.
Für Ihren Fall wäre es so etwas wie:
Ausgabe:
quelle
Sie können urllib2 verwenden , um die HTTP-Anforderungen zu stellen, und dann haben Sie Webinhalte.
Sie können es so bekommen:
Schöne Suppe ist ein Python-HTML-Parser, der sich gut zum Scraping von Bildschirmen eignet.
Insbesondere hier ist sie Tutorial ein HTML - Dokuments auf dem Parsen.
Viel Glück!
quelle
Ich verwende eine Kombination aus Scrapemark (URLs finden - py2) und httlib2 (Bilder herunterladen - py2 + 3). Die Dateiäbchenmarke.py enthält 500 Codezeilen, verwendet jedoch reguläre Ausdrücke, sodass sie möglicherweise nicht so schnell ist und nicht getestet wurde.
Beispiel für das Scraping Ihrer Website:
Verwendung:
Ergebnis:
quelle
Erleichtern Sie sich das Leben mit
CSS Selectors
Ich weiß, dass ich zu spät zum Feiern gekommen bin, aber ich habe einen schönen Vorschlag für dich.
Die Verwendung wurde
BeautifulSoup
bereits vorgeschlagen. Ich würde es vorziehenCSS Selectors
, Daten in HTML zu kratzenquelle
Wenn wir daran denken, den Namen von Elementen aus einer bestimmten Kategorie zu erhalten, können wir dies tun, indem wir den Klassennamen dieser Kategorie mit dem CSS-Selektor angeben:
Dies sind die Teilsuchergebnisse:
quelle
Hier ist ein einfacher Webcrawler, ich habe BeautifulSoup verwendet und wir werden nach allen Links (Ankern) suchen, deren Klassenname _3NFO0d ist. Ich habe Flipkar.com verwendet, es ist ein Online-Einzelhandelsgeschäft.
quelle
Python hat gute Möglichkeiten, das Web zu kratzen. Das beste mit einem Rahmen ist kratzig . Für Anfänger kann es etwas schwierig sein, daher hier eine kleine Hilfe.
1. Installieren Sie Python über 3.5 (niedrigere bis 2.7 funktionieren).
2. Erstellen Sie eine Umgebung in conda (ich habe dies getan).
3. Installieren Sie Scrapy an einem Ort und führen Sie es von dort aus ein.
4.
Scrapy shell
bietet Ihnen eine interaktive Oberfläche zum Testen Ihres Codes.5.
Scrapy startproject projectname
wird einen Rahmen schaffen.6.
Scrapy genspider spidername
erstellt eine Spinne. Sie können so viele Spinnen erstellen, wie Sie möchten. Stellen Sie dabei sicher, dass Sie sich im Projektverzeichnis befinden.Das einfachere ist, Anfragen und schöne Suppe zu verwenden . Bevor Sie beginnen, geben Sie eine Stunde Zeit, um die Dokumentation durchzugehen. Dadurch werden die meisten Ihrer Zweifel gelöst. BS4 bietet eine große Auswahl an Parsern, für die Sie sich entscheiden können. Verwenden Sie
user-agent
undsleep
, um das Schaben zu erleichtern. BS4 gibt einen bs.tag zurück, also benutzevariable[0]
. Wenn js ausgeführt wird, können Sie nicht direkt mit Anfragen und bs4 kratzen. Sie können den API-Link erhalten und dann den JSON analysieren, um die benötigten Informationen zu erhalten oder es zu versuchenselenium
.quelle