Anwendung von Web-Scraping speziell für Chrome mit Node.js

Hier ist eine Einführung, wie man mit Node.js spezialisiertes Web-Scraping für Chrome umsetzen kann. Mit Puppeteer und Puppeteer-Extra können Sie dynamische Inhalte verarbeiten und Blockaden umgehen.

6
Anwendung von Web-Scraping speziell für Chrome mit Node.js

Hallo, heute werde ich Ihnen zeigen, wie Sie einen Webcrawler mit Node.js erstellen können, anstatt Ruby, Python oder Java zu verwenden. Insbesondere werden wir uns ausführlich mit Puppeteer, einer leistungsstarken Node.js-Bibliothek zur Steuerung von Google Chrome oder Chromium, und seiner Erweiterung Puppeteer-Extra befassen.

Was ist Puppeteer?

Puppeteer ist eine Node.js-Bibliothek, die das Crawlen von Webseiten ermöglicht und die Interaktion mit Websites auf die gleiche Weise wie ein Benutzer ermöglicht. Puppeteer funktioniert standardmäßig im Headless-Modus, um Aufgaben im Hintergrund ohne GUI auszuführen, kann aber bei Bedarf auch im Headful-Modus mit vollständiger Browser-Oberfläche konfiguriert werden.

Warum Puppeteer verwenden?

1. Optimale Leistung für Chrome

Puppeteer kommuniziert direkt mit dem Chrome-Browser über das Chrome DevTools Protocol. Dies ermöglicht eine schnellere und präzisere Steuerung als die Verwendung der WebDriver-API, die von anderen Automatisierungstools wie Selenium bereitgestellt wird.

2. Starke Unterstützung für die Verarbeitung dynamischer Webinhalte

Puppeteer zeigt herausragende Leistung bei der Verarbeitung von dynamisch generierten Inhalten, die nicht nur statische Seiten, sondern auch mit JavaScript generierte Inhalte umfassen. Dies bedeutet, dass komplexe Interaktionen und dynamische Elemente des modernen Webs effektiv verarbeitet werden können.

3. Umgehung von Blockaden

In realen Crawling-Szenarien umgeht Puppeteer Blockaden und ist effektiv beim Sammeln von Daten. Insbesondere mit Puppeteer-Extra und dem Stealth Plugin können Daten stabiler gesammelt werden, indem automatische Erkennungsmechanismen umgangen werden.

Puppeteer-Extra und Stealth Plugin

Puppeteer-Extra

Puppeteer-Extra ist eine Erweiterung über der grundlegenden Puppeteer-Bibliothek, die es Benutzern ermöglicht, zusätzliche Funktionen einfach zu integrieren, um die Funktionalität zu verbessern und die Benutzerfreundlichkeit des Crawlers zu erhöhen.

Stealth Plugin

Das Stealth Plugin, eine der Plugins von Puppeteer-Extra, umgeht effektiv die häufig auftretende automatische Erkennung beim Crawlen. Während viele Websites Crawler blockieren, kann dieses Plugin dazu führen, dass der Crawler trotzdem wie ein Benutzerbrowser aussieht.

Praktisches Beispiel

Nun werden wir sehen, wie man mit Puppeteer-Extra und dem Stealth Plugin eine einfache Crawling-Aufgabe durchführt.

1. Installation der erforderlichen Module

Installieren Sie die Module puppeteer-extra und puppeteer-extra-plugin-stealth mit dem folgenden Befehl.

npm install puppeteer-extra puppeteer-extra-plugin-stealth

2. Laden der erforderlichen Module

import puppeteer from "puppeteer-extra";
import StealthPlugin from "puppeteer-extra-plugin-stealth";
import fs from "fs";

3. Behandlung der URL-Eingabe im Befehl

Da später der Befehl node node_js.mjs https://www.example.com verwendet wird, um die URL direkt einzugeben, wurde Code hinzugefügt, der eine Ausnahme auslöst, wenn die URL fehlt.

const args = process.argv.slice(2); // 첫 번째 요소는 Node.js 실행 경로이므로 제외
if (args.length < 1) {
  console.error("URL 파라미터가 필요합니다.");
  process.exit(1); // 오류로 종료
}

4. Anwendung des Stealth Plugins

puppeteer.use(StealthPlugin());

5. Interaktion mit dem Browser

puppeteer.launch({ headless: false }).then(async browser => {
  // 해당 headless는 하지 않고 눈에 보이게 브라우저를 띄워줍니다.

  const url = args[0]; // 첫 번째 파라미터로부터 URL 가져오기

  const page = await browser.newPage(); // 새 브라우저 열기
  await page.goto(url); // url로 페이지 이동
  await page.waitForTimeout(5000); // 렌더링 완료를 위해 5초 대기

  const currentUrl = await page.url(); // url을 변수에 저장
  console.log("현재 페이지의 URL:", currentUrl); // url이 제대로 담겼는지 출력

  // 페이지의 HTML을 변수에 저장
  const html = await page.content();

  // HTML 내용을 파일로 저장합니다
  fs.writeFile("pageContent.html", html, (err) => {
    if (err) {
      console.error("파일 저장 중 오류 발생:", err);
    } else {
      console.log("HTML이 성공적으로 저장됨: pageContent.html");
    }
  });
});

6. Ausführen des Befehls

Es wurde als mjs-Datei erstellt, um als Eingabeform zu dienen.

node [파일명].mjs https://www.naver.com

Die URL wird geöffnet und die Ausgabe wird im Terminal angezeigt.

7. Überprüfen der HTML-Datei

Nach diesen Schritten sollte festgestellt werden können, dass pageContent.html gespeichert wurde.

Fazit

Dieses Skript navigiert zur vom Benutzer angegebenen URL, ruft den HTML-Inhalt der Seite ab und speichert ihn in der Datei pageContent.html. Mit Puppeteer-Extra und dem Stealth Plugin können die automatischen Erkennungsmechanismen von Websites effektiv umgangen werden.

Ich hoffe, dass Ihnen dieser Artikel dabei geholfen hat, zu verstehen, wie man einen Crawler mit Node.js erstellt. Durch die Nutzung von Puppeteer und seinen Erweiterungen können Sie eine leistungsstarke und effektive Lösung für das Web Crawling implementieren.

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Weiterlesen

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.