Kernpunkte
<ul>request
cheerio
kombinieren request
cheerio
request
var request = require("request"); request({ uri: "http://www.sitepoint.com", }, function(error, response, body) { console.log(body); });
Cheerio -Modul
Während node.js kein integriertes DOM hat, gibt es einige Module, die DOM aus HTML-Quellcode-Zeichenfolgen erstellen können. Zwei beliebte DOM -Module sind
und. Dieser Artikel konzentriert sich auf <code>cheerio, das mit dem folgenden Befehl installiert werden kann: jsdom
cheerio
Das
npm install cheerio
JQuery sehr ähnlich, und es ist leicht, dass Sie versuchen, die nicht implementierte JQuery -Funktion in <code>cheerio zu verwenden. Das folgende Beispiel zeigt, wie HTML -Zeichenfolgen mit <code>cheerio analysiert werden. Die erste Zeile importiert <code>cheerio in das Programm. <code>cheerio Variable spart das HTML -Fragment, das analysiert werden soll. In Zeile 3 analysieren Sie HTML mit <code>cheerio. Das Ergebnis wird der html
Variablen zugeordnet. Das Dollarschild wurde ausgewählt, weil es traditionell in JQuery verwendet wurde. Zeile 4 verwendet den CSS -Style -Selektor, um das Element <code>cheerio
auszuwählen. Verwenden Sie schließlich die $
-Methode, um das interne HTML der Liste zu drucken. <ul>
var request = require("request"); request({ uri: "http://www.sitepoint.com", }, function(error, response, body) { console.log(body); });
<code>cheerio steht aktiv und verbessert sich ständig. Es hat jedoch immer noch einige Einschränkungen. <code>cheerio Der frustrierendste Aspekt ist der HTML -Parser. HTML -Parsing ist ein schwieriges Problem, und es gibt viele Webseiten, die schlechtes HTML enthalten. Während <code>cheerio auf diesen Seiten nicht abstürzt, können Sie möglicherweise keine Elemente auswählen. Dies macht es schwierig festzustellen, ob der Fehler Ihr Selektor oder die Seite selbst ist.
crawl JSPRO
Das folgende Beispiel kombiniert request
und <code>cheerio, um einen vollständigen Web -Crawler zu erstellen. Diese Probe zeichnet den Titel und die URL aller Artikel auf der JSPRO -Homepage aus. Die ersten beiden Zeilen importieren das erforderliche Modul in das Beispiel. Laden Sie den Quellcode der JSPRO -Homepage von Zeilen 3 bis 5 herunter. Geben Sie dann den Quellcode zum Parsen an <code>cheerio über.
npm install cheerio
Wenn Sie sich den JSPRO -Quellcode ansehen, werden Sie feststellen, dass jeder Post -Titel ein Link ist, der im Element entry-title
mit der Klasse <a></a>
enthalten ist. Der Selektor in Zeile 7 wählt alle Artikellinks aus. Verwenden Sie dann die each()
-Funktion, um alle Artikel durchzusetzen. Schließlich werden der Artikeltitel und die URL aus dem Text des Links bzw. href
Eigenschaften erhalten.
Schlussfolgerung
Dieser Artikel zeigt Ihnen, wie Sie einen einfachen Webcrawler in node.js. erstellen. Beachten Sie, dass dies nicht der einzige Weg ist, um eine Webseite zu kriechen. Es gibt andere Technologien, wie z. B. die Verwendung kopfloser Browser, die leistungsfähiger sind, die Einfachheit und/oder Geschwindigkeit beeinflussen können. Bitte verfolgen Sie die kommenden Artikel über Phantomjs Headless Browser.
node.js Web Crawling FAQ (FAQ)
dynamischen Inhalt in node.js kann etwas schwierig sein, da der Inhalt asynchron geladen wird. Sie können eine Bibliothek wie Puppenspieler verwenden, eine Node.js-Bibliothek, die eine API auf hoher Ebene bietet, um Chrom oder Chrom durch das Devtools-Protokoll zu steuern. Puppeteeder läuft standardmäßig im Kopflosenmodus, kann jedoch so konfiguriert werden, dass er ein vollständiges (nicht headloses) Chrom oder Chrom ausgeführt wird. Auf diese Weise können Sie dynamische Inhalte kriechen, indem Sie Benutzerinteraktionen simulieren.
Wenn die Website einen abnormalen Datenverkehr erkennt, kann das Web -Crawling manchmal dazu führen, dass Ihre IP verboten wird. Um dies zu vermeiden, können Sie Techniken wie das Drehen Ihrer IP -Adresse, die Verwendung von Verzögerungen und sogar eine kriechende API verwenden, die diese Probleme automatisch behandelt.
Um Daten von der Website zu kriechen, die Sie anmelden müssen, können Sie Puppenspieler verwenden. Puppenspieler können den Anmeldevorgang simulieren, indem er das Anmeldeformular ausfüllt und einsendet. Sobald Sie sich angemeldet haben, können Sie zur gewünschten Seite navigieren und die Daten kriechen.
Nach dem Krabbeln der Daten können Sie den Datenbank -Client der Datenbank Ihrer Wahl verwenden. Wenn Sie beispielsweise MongoDB verwenden, können Sie den MongoDB Node.js -Client verwenden, um eine Verbindung zu Ihrer Datenbank herzustellen und die Daten zu speichern.
Um Daten von einer Website mit Paging zu kriechen, können Sie eine Schleife verwenden, um die Seite zu durchsuchen. In jeder Iteration können Sie Daten von der aktuellen Seite kriechen und auf die Schaltfläche "nächste Seite" klicken, um zur nächsten Seite zu navigieren.
Um Daten von einer Website mit unendlichem Scrollen zu kriechen, können Sie Puppenspieler verwenden, um das Scrollen nach unten zu simulieren. Sie können eine Schleife verwenden, um kontinuierlich nach unten zu scrollen, bis neue Daten nicht mehr geladen sind.
Fehlerbehebung ist im Webkriechen von entscheidender Bedeutung. Sie können den Try-Catch-Block verwenden, um Fehler zu behandeln. Im Fangblock können Sie Fehlermeldungen protokollieren, die Ihnen helfen, das Problem zu debuggen.
Um Daten von einer Website zu kriechen, die AJAX verwendet, können Sie Puppenspieler verwenden. Puppenspieler können warten, bis der Ajax -Anruf ausgeführt wird, und dann die Daten zu greifen.
Um das Web -Crawling zu beschleunigen, können Sie Techniken wie Parallelverarbeitung verwenden, um mehrere Seiten auf verschiedenen Registerkarten zu öffnen und gleichzeitig Daten davon abzuholen. Achten Sie jedoch darauf, die Website nicht mit zu vielen Anfragen zu überladen, da dies dazu führt, dass Ihre IP verboten wird.
kriechende Daten von Websites mit Captcha können eine Herausforderung sein. Sie können Dienste wie 2Captcha nutzen, die eine API zur Lösung von Captcha zur Verfügung stellen. Denken Sie jedoch daran, dass dies in einigen Fällen illegal oder unmoralisch sein kann. Respektieren Sie immer die Nutzungsbedingungen der Website.
Das obige ist der detaillierte Inhalt vonWeb -Scraping in node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!