日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
用Puppeteer實(shí)現(xiàn)一個(gè)自動(dòng)化機(jī)器人

目錄

  • 簡(jiǎn)介

    為銅官等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及銅官網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站制作、銅官網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

  • Selenium vs Puppeteer

  • 安裝

  • 一個(gè)簡(jiǎn)單的例子

  • 解釋代碼

  • 把項(xiàng)目容器化

  • 容器打包時(shí)的一些坑

    • 1. Puppeteer 安裝 Chromium 時(shí)會(huì)缺少一些組件

    • 2. 頁(yè)面焦點(diǎn)問(wèn)題

    • 3. Page Crash 問(wèn)題

    • 4. 時(shí)區(qū)問(wèn)題

Puppeteer 是 Node.js 的一個(gè)函數(shù)庫(kù),可用來(lái)操控瀏覽器,是 Google 的項(xiàng)目,可以應(yīng)用的范圍包括:前端的自動(dòng)化測(cè)試、爬蟲(chóng)、表單提交等。

Selenium vs Puppeteer

之前有過(guò)用 Python 配合 Selenium 的經(jīng)驗(yàn),不過(guò)如果是做爬蟲(chóng)、自動(dòng)化操作用 Puppeteer 還是非常方便的,安裝簡(jiǎn)單快速,API 也容易使用。美中不足的是它只支持 Chromium 以下是兩者的比較,僅供參考:

由于 Puppeteer 是用 Node.js 寫(xiě)的,所以必須要先安裝 Node。

  1. 可以至官網(wǎng) 下載

  2. 如果用 mac 可以使用  https://nodejs.org/en/

安裝完后可以在 terminal 輸入 node -v 檢查是否安裝成功

然后到要開(kāi)發(fā)的項(xiàng)目路徑下輸入 npm init -y 初始化項(xiàng)目,接著 npm i puppeteer ,安裝的時(shí)候會(huì)發(fā)現(xiàn)它會(huì)連同 Chromium 一同安裝。

安裝成功后就可以開(kāi)始了。

一個(gè)簡(jiǎn)單的例子

新增一個(gè)文件 main.js ,并復(fù)制以下代碼:

 
 
 
 
  1. const puppeteer = require('puppeteer'); 
  2.  
  3. (async () => { 
  4.  
  5.   // 開(kāi)啟 browser 
  6.   const browser = await puppeteer.launch({ 
  7.         headless: false 
  8.   }); 
  9.   // 新增分頁(yè) 
  10.   const page = await browser.newPage(); 
  11.   // 到自己的博客網(wǎng)站 
  12.   await page.goto(`https://www.myblog.com/`); 
  13.   // 等待訂閱按鈕出現(xiàn) 
  14.   await page.waitForSelector("button[class='subscribe-button pill-button']"); 
  15.   // 點(diǎn)擊訂閱按鈕 
  16.   await page.click("button[class='subscribe-button pill-button']"); 
  17. })(); 

接著到終端下輸入 node main.js 執(zhí)行。

解釋代碼

前面的代碼先引入 Puppeteer,以便后續(xù)使用,接下來(lái)可以看到用 async 以及 () => , async 表示函數(shù)要用到異步操作, () => 則是 JS 的箭頭函數(shù)。

 
 
 
 
  1. const puppeteer = require('puppeteer'); 

接下來(lái)是用 Puppeteer 打開(kāi)一個(gè)瀏覽器 ( Chromium ),其中可以看到我們?cè)O(shè)了參數(shù) headless : false ,如果是設(shè)定為 true ,會(huì)開(kāi)啟沒(méi)有界面的無(wú)頭瀏覽器,如果設(shè)定 false ,就會(huì)開(kāi)一個(gè)瀏覽器窗口。

 
 
 
 
  1. const browser = await puppeteer.launch({ 
  2.     headless: false 
  3. }); 

這段就很簡(jiǎn)單了,它會(huì)幫你在瀏覽器開(kāi)一個(gè)新的分頁(yè)。

 
 
 
 
  1. const page = await browser.newPage(); 

這段也很容易,看到 goto 就可以猜到會(huì)幫你導(dǎo)向后方指定的網(wǎng)址。

 
 
 
 
  1. await page.goto(`https://b123105.blogspot.com/`); 

最后這段代碼用到了 click 這個(gè)方法,它能夠幫你點(diǎn)擊后面指定的元素,可以看到我是指定 class = subscribe-button pill-button 的