說到網絡爬蟲,大家第一時間想到的可能是python,但其實Node.js也十分適合用來爬蟲。爬蟲通常涉及大量請求,像推特這種由js/ajax动态生成的網頁更是必須等待數據加載完成才能進行爬取。Node.js的單線,非阻塞I/O機制使它在等待請求與渲染時不會被阻塞,大大提高速度。
Puppeteer
Puppeteer 是 Node.js 的函式庫,它提供各種 API 來控制 Chrome 或 Chromium 瀏覽器,而此瀏覽器也是目前主流的瀏覽器,用來做為測試、爬蟲都相當合適,並且所提供的 API 語法淺顯易懂。這次我就用到爬蟲相關幾個方法,其他使用方法可以到puppeteer查看。
準備
- 在初始化Node.js後先安裝相關的包
npm install Puppeteer
- 創建twitter.js,我們會在裡面封裝好方法,然後在index.js調用
- 創建index.js并引入
const puppeteer = require('puppeteer');
const fs = require('fs');
const twitter = require('./twitter');//自己封裝的方法
用puppeteer打開一個瀏覽器
initialize : async () => {
browser = await puppeteer.launch({
//如果為true則只在後台運行
headless : false,
defaultViewport