Ich denke an Beautiful Soup , ein Python-Paket für HTML-Scraping. Gibt es andere HTML-Scraping-Pakete, die ich mir ansehen sollte? Python ist keine Voraussetzung, ich bin eigentlich daran interessiert, auch über andere Sprachen zu hören.
Die Geschichte bisher:
- Python
- Rubin
- .NETZ
- Perl
- Java
- JavaScript
- PHP
- Die meisten von ihnen
XPathExpression
verwendet werden (das seit Java 1.5 existiert)Antworten:
Das Äquivalent der Ruby-Welt zu Beautiful Soup ist der Grund für die Hpricot von the_lucky_stiff .
quelle
In der .NET-Welt empfehle ich das HTML Agility Pack. Nicht annähernd so einfach wie einige der oben genannten Optionen (wie HTMLSQL), aber sehr flexibel. Sie können schlecht geformtes HTML so manipulieren, als wäre es gut geformtes XML, sodass Sie XPATH verwenden oder einfach über Knoten iterieren können.
http://www.codeplex.com/htmlagilitypack
quelle
BeautifulSoup ist eine großartige Möglichkeit, HTML-Scraping durchzuführen. Bei meinem vorherigen Job habe ich viel geschabt und ich wünschte, ich wüsste etwas über BeautifulSoup, als ich anfing. Es ist wie das DOM mit viel nützlicheren Optionen und viel pythonischer. Wenn Sie Ruby ausprobieren möchten, haben sie BeautifulSoup portiert und es RubyfulSoup genannt, aber es wurde seit einiger Zeit nicht mehr aktualisiert.
Andere nützliche Tools sind HTMLParser oder sgmllib.SGMLParser, die Teil der Standard-Python-Bibliothek sind. Diese funktionieren, indem Methoden jedes Mal aufgerufen werden, wenn Sie ein Tag eingeben / beenden und auf HTML-Text stoßen. Sie sind wie Expat, wenn Sie damit vertraut sind. Diese Bibliotheken sind besonders nützlich, wenn Sie sehr große Dateien analysieren möchten und das Erstellen eines DOM-Baums langwierig und teuer wäre.
Reguläre Ausdrücke sind nicht sehr notwendig. BeautifulSoup verarbeitet reguläre Ausdrücke. Wenn Sie ihre Leistung benötigen, können Sie sie dort verwenden. Ich sage, gehen Sie mit BeautifulSoup, es sei denn, Sie benötigen Geschwindigkeit und einen geringeren Speicherbedarf. Wenn Sie einen besseren HTML-Parser für Python finden, lassen Sie es mich wissen.
quelle
Ich fand, dass HTMLSQL eine lächerlich einfache Möglichkeit ist, Bildschirmkratzer zu erstellen. Es dauert buchstäblich Minuten, um Ergebnisse zu erzielen.
Die Abfragen sind sehr intuitiv - wie:
Es gibt jetzt einige andere Alternativen, die den gleichen Ansatz verfolgen.
quelle
Die Python- lxml- Bibliothek fungiert als Pythonic-Bindung für die Bibliotheken libxml2 und libxslt. Ich mag besonders die XPath-Unterstützung und das hübsche Drucken der speicherinternen XML-Struktur. Es unterstützt auch das Parsen von defektem HTML. Und ich glaube nicht, dass Sie andere Python-Bibliotheken / -Bindungen finden können, die XML schneller analysieren als lxml.
quelle
Für Perl gibt es WWW :: Mechanize.
quelle
Python bietet neben Beatiful Soup mehrere Optionen für HTML-Scraping. Hier sind einige andere:
WWW:Mechanize
. Gibt Ihnen ein browserähnliches Objekt, mit dem Sie mit Webseiten inaktiv werden könnenlibwww
. Unterstützt verschiedene Optionen zum Durchlaufen und Auswählen von Elementen (z. B. XPath- und CSS-Auswahl)quelle
'Simple HTML DOM Parser' ist eine gute Option für PHP. Wenn Sie mit jQuery- oder JavaScript-Selektoren vertraut sind, sind Sie zu Hause.
Finden Sie es hier
Es gibt hier auch einen Blog-Beitrag darüber.
quelle
Warum hat noch niemand JSOUP für Java erwähnt? http://jsoup.org/
quelle
Das Templatemaker- Dienstprogramm von Adrian Holovaty (von Django ) verwendet einen sehr interessanten Ansatz: Sie geben Variationen derselben Seite ein und "lernen", wo sich die "Löcher" für variable Daten befinden. Es ist nicht HTML-spezifisch, daher eignet es sich auch zum Scrapen anderer Klartextinhalte. Ich habe es auch für PDFs und HTML verwendet, die in Klartext konvertiert wurden (mit pdftotext bzw. lynx).
quelle
Ich kenne und liebe Screen-Scraper .
Screen-Scraper ist ein Tool zum Extrahieren von Daten von Websites. Screen-Scraper automatisiert:
Allgemeine Verwendungen:
Technisch:
Drei Ausgaben von Screen-Scraper:
quelle
Ich würde zuerst herausfinden, ob die fraglichen Sites einen API-Server oder RSS-Feeds für den Zugriff auf die von Ihnen benötigten Daten bereitstellen.
quelle
Der Überlauf von Scraping Stack ist mit Schuhen und Hpricot besonders einfach .
quelle
Eine weitere Option für Perl wäre Web :: Scraper, das auf Ruby's Scrapi basiert . Kurz gesagt, mit einer schönen und präzisen Syntax können Sie einen robusten Scraper direkt in Datenstrukturen einbinden.
quelle
Ich habe einige Erfolge mit HtmlUnit in Java erzielt . Es ist ein einfaches Framework zum Schreiben von Komponententests auf Web-Benutzeroberflächen, aber ebenso nützlich für das HTML-Scraping.
quelle
Yahoo! Query Language oder YQL können zusammen mit jQuery, AJAX, JSONP verwendet werden, um Scrape-Webseiten zu überprüfen
quelle
Ein weiteres Tool für .NET ist MhtBuilder
quelle
Es gibt auch diese Lösung: netty HttpClient
quelle
Ich benutze Hpricot auf Ruby. Als Beispiel ist dies ein Codeausschnitt, mit dem ich alle Buchtitel von den sechs Seiten meines HireThings-Kontos abrufe (da sie anscheinend keine einzige Seite mit diesen Informationen enthalten):
Es ist ziemlich vollständig. Alles, was davor kommt, sind Bibliotheksimporte und die Einstellungen für meinen Proxy.
quelle
Ich habe Beautiful Soup viel mit Python verwendet. Es ist viel besser als die Überprüfung regulärer Ausdrücke, da es wie die Verwendung des DOM funktioniert , auch wenn der HTML-Code schlecht formatiert ist. Sie können schnell HTML-Tags und Text mit einfacherer Syntax als reguläre Ausdrücke finden. Sobald Sie ein Element gefunden haben, können Sie es und seine untergeordneten Elemente durchlaufen. Dies ist für das Verständnis des Inhalts im Code nützlicher als bei regulären Ausdrücken. Ich wünschte, Beautiful Soup existierte vor Jahren, als ich viel Screenscraping durchführen musste - es hätte mir viel Zeit und Kopfschmerzen gespart, da die HTML-Struktur so schlecht war, bevor die Leute damit begannen, sie zu validieren.
quelle
Obwohl es für .NET - Webtests entwickelt wurde , habe ich zu diesem Zweck das WatiN- Framework verwendet. Da es DOM-basiert ist, ist es ziemlich einfach, HTML, Text oder Bilder zu erfassen. Kürzlich habe ich damit eine Liste von Links aus einer MediaWiki All Pages-Namespace-Abfrage in eine Excel-Tabelle geschrieben. Die folgende VB.NET- Code-Verwaltung ist ziemlich grob, funktioniert aber.
quelle
Implementierungen des HTML5-Parsing-Algorithmus : html5lib (Python, Ruby), Validator.nu HTML-Parser (Java, JavaScript; C ++ in Entwicklung), Hubbub (C), Twintsam (C #; in Vorbereitung ).
quelle
Du wärst ein Dummkopf, wenn du Perl nicht benutzt. Hier kommen die Flammen.
Bone up auf den folgenden Modulen und ginsu alle Kratzer herum.
quelle
Ich habe LWP und HTML :: TreeBuilder mit Perl verwendet und fand sie sehr nützlich.
Mit LWP (kurz für libwww-perl) können Sie eine Verbindung zu Websites herstellen und den HTML-Code kratzen. Sie können das Modul hier und das O'Reilly-Buch herunterladen scheint hier online zu sein .
Mit TreeBuilder können Sie einen Baum aus dem HTML erstellen. Dokumentation und Quelle sind in HTML :: TreeBuilder - Parser verfügbar , der einen HTML-Syntaxbaum erstellt .
Es könnte jedoch noch zu viel schweres Heben geben, um mit so etwas zu tun zu haben. Ich habe mir das von einer anderen Antwort vorgeschlagene Mechanize-Modul nicht angesehen , daher kann ich das durchaus tun.
quelle
In Java können Sie TagSoup verwenden .
quelle
Wenn Sie möchten, dass dies vom Client aus nur mit einem Browser durchgeführt wird, haben Sie jcrawl.com . Nachdem Sie Ihren Verschrottungsdienst über die Webanwendung ( http://www.jcrawl.com/app.html) erstellt haben ) erstellt haben, müssen Sie nur das generierte Skript zu einer HTML-Seite hinzufügen, um Ihre Daten verwenden / präsentieren zu können.
Die gesamte Verschrottungslogik erfolgt im Browser über JavaScript. Ich hoffe, Sie finden es nützlich. Klicken Sie auf diesen Link, um ein Live-Beispiel zu erhalten, das die neuesten Nachrichten aus Yahoo Tennis extrahiert .
quelle
Sie haben wahrscheinlich schon so viel, aber ich denke, das ist, was Sie versuchen zu tun:
quelle
Ich hatte gemischte Ergebnisse in .NET mit SgmlReader, das ursprünglich von Chris Lovett gestartet wurde und anscheinend von MindTouch aktualisiert wurde .
quelle
Ich mag die ImportXML-Funktion (URL, XPath) von Google Spreadsheets.
Es werden Zellen in der Spalte wiederholt, wenn Ihr XPath-Ausdruck mehr als einen Wert zurückgibt.
Sie können bis zu 50
importxml()
Funktionen in einer Tabelle haben.Das Web-Plugin von RapidMiner ist auch ziemlich einfach zu bedienen. Es kann Beiträge verfassen, Cookies akzeptieren und den Benutzeragenten festlegen .
quelle
Ich hatte auch großen Erfolg mit Aptanas Jaxer + jQuery zum Parsen von Seiten. Es ist nicht so schnell oder "skriptartig", aber jQuery-Selektoren + echtes JavaScript / DOM sind ein Lebensretter auf komplizierteren (oder fehlerhaften) Seiten.
quelle