Gibt es so etwas wie Rubys Nokogiri auf Nodejs? Ich meine einen benutzerfreundlichen HTML-Parser.
Ich hatte auf der Node.js-Modulseite einige Parser gesehen, aber ich kann nichts Hübsches und Frisches finden.
Gibt es so etwas wie Rubys Nokogiri auf Nodejs? Ich meine einen benutzerfreundlichen HTML-Parser.
Ich hatte auf der Node.js-Modulseite einige Parser gesehen, aber ich kann nichts Hübsches und Frisches finden.
Antworten:
Wenn Sie DOM erstellen möchten, können Sie jsdom verwenden .
Es gibt auch Cheerio , es hat die jQuery- Oberfläche und es ist viel schneller als ältere Versionen von jsdom, obwohl sie heutzutage in der Leistung ähnlich sind.
Vielleicht möchten Sie einen Blick auf htmlparser2 werfen , einen Streaming-Parser, der laut Benchmark schneller als andere ist und standardmäßig kein DOM enthält. Es kann auch ein DOM erstellen, da es auch mit einem Handler gebündelt ist, der ein DOM erstellt. Dies ist der Parser, der von Cheerio verwendet wird.
parse5 sieht auch nach einer guten Lösung aus. Es ist ziemlich aktiv (11 Tage seit dem letzten Commit seit diesem Update), WHATWG-kompatibel und wird in jsdom , Angular und Polymer verwendet .
Und wenn Sie HTML für das Web-Scraping analysieren möchten , können Sie YQL 1 verwenden . Es gibt ein Knotenmodul dafür. YQL Ich denke, es wäre die beste Lösung, wenn Ihr HTML von einer statischen Website stammt, da Sie sich auf einen Dienst verlassen, nicht auf Ihren eigenen Code und Ihre eigene Verarbeitungsleistung. Beachten Sie, dass es nicht funktioniert, wenn die Seite von der robot.txt der Website nicht zugelassen wird, YQL jedoch nicht damit funktioniert.
Wenn die Website, die Sie kratzen möchten, dynamisch ist, sollten Sie einen kopflosen Browser wie phantomjs verwenden . Schauen Sie sich auch casperjs an , wenn Sie Phantomjs in Betracht ziehen. Und Sie können casperjs vom Knoten mit SpookyJS steuern .
Neben Phantomjs gibt es Zombiejs . Im Gegensatz zu Phantomjs, die nicht in Nodejs eingebettet werden können, ist Zombiejs nur ein Knotenmodul.
Für die letzteren Lösungen gibt es eine Nettuts + Toturial .
1 Seit August 2014, YUI - Bibliothek, die eine Voraussetzung für die YQL ist, ist nicht mehr aktiv gepflegt, Quelle
Versuchen Sie es mit https://github.com/tmpvar/jsdom - Sie geben ihm HTML und es gibt Ihnen ein DOM.
Sie können sich auch Röntgen ansehen: https://github.com/lapwinglabs/x-ray