puppeteer + nodejs 抓取網頁內容
一、配置相關環境
1、下載nodejs
網址: http://nodejs.cn/download/
注:我使用的是二進位制包 64位。解壓後可直接使用

nodejs.png
2、檢視node版本資訊。
2.1在命令提示符中進入到nodejs目錄下,然後輸入 node -v。

版本資訊.png
3、安裝puppeteer模組。
3.1puppeteer簡單介紹
Puppeteer是什麼
Puppeteer 是一個Node庫, 它提供高階API,通過DevTools Protocol 來控制Chrome 或 Chromium。 Puppeteer 預設執行為headless ,但是可以配置為執行為non-headless 。
可以做什麼
生成頁面截圖或PDF
抓取SPA 並生成預渲染內容(SSR)
參考: https://www.jianshu.com/p/679f07ba474b
3.2puppeteer安裝(由於本機已經安裝過puppeteer就不進行截圖)
1、在windows環境下安裝,在命令提示符中,輸入命令:npm i --save puppeteer --ignore-scripts,即可安裝成功。
參考: https://jingyan.baidu.com/article/d5c4b52ba71fa0da560dc51d.html
4、chromeium可以下載對應的chromium,一定要和本機的chrome瀏覽器版本相對應,也可以直接使用本機的chrome瀏覽器。
二、以抓取京東為例。
const puppeteer = require('puppeteer'); (async ()=> { //chrome地址 const chromePath=process.argv[2] //傳進的將要解析的url網址 const address=process.argv[3]; const browser = await puppeteer.launch({ignoreHTTPSErrors: true,headless: false,executablePath:chromePath,timeout:60000,args: ['--no-sandbox', '--disable-setuid-sandbox']}); // 開啟新頁面 const page = await browser.newPage(); //等待時間 var time=25000; // 訪問 await page.goto(request_url, {waitUntil: 'domcontentloaded'}).catch(err => console.log(err)); await page.waitFor(address); let content = await page.content() console.log(content); await browser.close(); })();
執行命令:在cmd中執行 : nodejs路徑 puppeteer路徑 chrome瀏覽器路徑 http://www.baidu.com