Appliquer le scraping web spécialisé pour Chrome avec Node.js

Ceci est une introduction sur l'application du scraping web spécialisé pour Chrome en utilisant Node.js. Vous pouvez gérer le contenu dynamique et contourner les blocages en utilisant Puppeteer et Puppeteer-Extra.

7
Appliquer le scraping web spécialisé pour Chrome avec Node.js

Bonjour, aujourd'hui je vais vous présenter comment créer un web crawler en utilisant Node.js au lieu de Ruby, Python ou Java. En particulier, nous examinerons de près Puppeteer, une puissante bibliothèque Node.js qui permet de contrôler Google Chrome ou Chromium, ainsi que son extension Puppeteer-Extra.

Qu'est-ce que Puppeteer?

Puppeteer est une bibliothèque Node.js qui permet le crawling de pages web et l'interaction avec des sites web de la même manière qu'un utilisateur. Puppeteer fonctionne principalement en mode Headless, effectuant des tâches en arrière-plan sans interface graphique, mais peut également être configuré en mode Headful avec l'interface complète du navigateur si nécessaire.

Pourquoi utiliser Puppeteer?

1. Performances optimisées pour Chrome

Puppeteer communique directement avec le navigateur Chrome en utilisant le protocole Chrome DevTools, offrant un contrôle plus rapide et précis que l'utilisation de l'API WebDriver fournie par d'autres outils d'automatisation tels que Selenium.

2. Gestion efficace du contenu web dynamique

Puppeteer excelle dans le traitement de contenu généré dynamiquement en JavaScript, en plus des pages statiques. Cela signifie qu'il peut efficacement gérer les interactions complexes et les éléments dynamiques du web moderne.

3. Contournement des blocages

Dans les opérations de crawling réelles, Puppeteer est efficace pour contourner les blocages et collecter des données. En particulier, en utilisant Puppeteer-Extra et le plugin Stealth, il est possible de collecter des données de manière plus stable en contournant les mécanismes de détection d'automatisation.

Puppeteer-Extra et le plugin Stealth

Puppeteer-Extra

Puppeteer-Extra est une extension construite au-dessus de la bibliothèque Puppeteer de base, permettant aux utilisateurs d'intégrer facilement des fonctionnalités supplémentaires via un système de plugins flexible. Cela améliore les fonctionnalités et l'utilité du crawler.

Plugin Stealth

Le plugin Stealth de Puppeteer-Extra permet d'éviter efficacement les détections d'automatisation fréquemment rencontrées lors du crawling. Alors que de nombreux sites web bloquent les crawlers, ce plugin permet de rendre le crawler automatique indétectable en imitant le comportement d'un navigateur utilisateur.

Exemple d'utilisation pratique

Maintenant, voyons comment effectuer une tâche de crawling simple en utilisant Puppeteer-Extra et le plugin Stealth.

1. Installation des modules nécessaires

Pour installer les modules puppeteer-extra et puppeteer-extra-plugin-stealth, exécutez la commande suivante.

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

2. Importation des modules nécessaires

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

3. Gestion de l'entrée de l'URL dans la commande

Nous avons ajouté un code pour générer une exception si l'URL est manquante, car ultérieurement nous utiliserons une commande telle que node node_js.mjs https://www.example.com pour entrer l'URL directement.

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

4. Application du plugin Stealth

puppeteer.use(StealthPlugin());

5. Interaction avec le navigateur

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. Exécution de la commande

Nous avons créé un fichier mjs pour recevoir l'entrée sous forme de commande.

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

L'URL s'ouvre directement et les résultats s'affichent dans le terminal.

7. Vérification du fichier HTML

Après ces étapes, vous pouvez vérifier que pageContent.html a été enregistré.

Conclusion

Ce script permet à l'utilisateur de se rendre sur l'URL spécifiée, de récupérer le HTML de la page et de le sauvegarder dans un fichier pageContent.html. En utilisant Puppeteer-Extra et le plugin Stealth, il est possible de contourner efficacement la logique de détection d'automatisation des sites web.

J'espère que ce guide vous a aidé à comprendre comment créer un web crawler en utilisant Node.js. En exploitant Puppeteer et ses extensions, vous pouvez mettre en place des solutions de crawling web plus puissantes et efficaces.

Comments

Add Comment

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

Continuer la lecture

Get notified of new posts

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

Your email will only be used for new post notifications.