Heim > Web-Frontend > js-Tutorial > Web -Scraping in node.js

Web -Scraping in node.js

Jennifer Aniston
Freigeben: 2025-02-24 08:53:09
Original
570 Leute haben es durchsucht

Web Scraping in Node.js

Kernpunkte

<ul>
  • node.js 'Web -Crawling beinhaltet das Herunterladen von Quellcode von einem Remote -Server und das Extrahieren von Daten daraus. <code>cheerio Das request
  • Modul implementiert eine Teilmenge von JQuery, die DOM von HTML -Zeichenfolgen erstellen und analysieren kann, aber es kann schwierig sein, mit schlecht strukturiertem HTML umzugehen.
  • cheerio kombinieren
  • und
  • können einen vollständigen Webcrawler erstellen, um bestimmte Elemente einer Webseite zu extrahieren, aber dynamische Inhalte zu bearbeiten, Verbote zu vermeiden und Websites zu bearbeiten, für die Anmeldung oder Verwendung Captcha erforderlich ist und möglicherweise erfordern ist und möglicherweise erforderlich ist und möglicherweise erforderlich ist und möglicherweise erforderlich ist und möglicherweise erfordern Zusätzliche Tools oder Strategien. request cheerio
  • Der Web -Crawler ist softwarebechlich auf Webseiten zugreift und Daten aus ihnen extrahiert. Aufgrund von Problemen wie der Vervielfältigung von Inhalten ist das Webcrawling ein etwas umstrittenes Thema. Die meisten Website -Eigentümer bevorzugen es, über öffentlich verfügbare APIs auf ihre Daten zugreifen zu können. Leider bieten viele Websites eine schlechte API -Qualität und sogar eine API. Dies zwang viele Entwickler, sich dem Web -Crawling zuzuwenden. In diesem Artikel werden Sie vermittelt, wie Sie Ihren eigenen Webcrawler in node.js. Der erste Schritt im Web -Crawling besteht darin, den Quellcode vom Remote -Server herunterzuladen. In "HTTP -Anforderungen in node.js" lernten die Leser, wie man die Seite Modul verwendet hat. Das folgende Beispiel überprüft schnell, wie eine GET -Anfrage in node.js.

    request

    Der zweite Schritt im Web -Crawling, der ebenfalls schwieriger ist, besteht darin, Daten aus dem heruntergeladenen Quellcode zu extrahieren. Auf der Clientseite kann diese Aufgabe mit Bibliotheken wie Selektor -API oder JQuery problemlos erledigt werden. Leider stützen sich diese Lösungen auf Annahmen, dass DOM abfragt werden kann. Leider bietet Node.js DOM nicht. Oder gibt es welche?
    var request = require("request");
    
    request({
      uri: "http://www.sitepoint.com",
    }, function(error, response, body) {
      console.log(body);
    });
    Nach dem Login kopieren
    Nach dem Login kopieren

    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
    Nach dem Login kopieren
    Nach dem Login kopieren
    Modul implementiert eine Untergruppe von JQuery, was bedeutet, dass viele Entwickler schnell beginnen können. Tatsächlich ist

    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);
    });
    Nach dem Login kopieren
    Nach dem Login kopieren

    Einschränkungen

    <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
    Nach dem Login kopieren
    Nach dem Login kopieren

    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)

    Wie kann ich in Node.js Webcrawl umgehen?

    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.

    Wie kann man vermeiden, beim Krabbeln einer Webseite verboten zu werden?

    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.

    Wie kriechen Sie Daten von der Website, die Sie sich anmelden müssen?

    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.

    Wie speichern Sie die Krabbendaten in der Datenbank?

    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.

    Wie kann man Daten von einer Website mit Paging kriechen?

    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.

    Wie kann man Daten von einer Website mit unendlichem Scrollen kriechen?

    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.

    Wie kann ich Fehler im Web -Kriechen mit dem Umgang mit Fehlern umgehen?

    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.

    Wie kann man Daten mit AJAX von einer Website kriechen?

    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.

    Wie kann man das Webkriechen in Node.js beschleunigen?

    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.

    Wie kann ich Daten mit Captcha von einer Website kriechen?

    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!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Neueste Artikel des Autors
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage