日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Puppeteer进行数据抓取(一)——安装和使用

發(fā)布時間:2023/12/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Puppeteer进行数据抓取(一)——安装和使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Puppeteer 是 Google Chrome 團隊官方的Chrome 自動化工具。它本身是基于Chrome Dev Protocol協(xié)議實現(xiàn)的,但它提供了更高層次API封裝,使用起來更加方便快捷。加上google這個大咖加官方的背景,更使得其地位更是提升了不少。

我之前在文章使用Chrome快速實現(xiàn)數(shù)據(jù)的抓取(五)—— puppeteer中簡單的介紹過一下它,之前準備寫一系列文章來詳細介紹下它的,但由于種種原因一直耽擱了,這篇文章其實在電腦里已經(jīng)存了不少時間了,今天抽空整理了下,將其發(fā)表出來。

?

安裝NodeJS

Puppeteer是一個NodeJS的開發(fā)包,因此需要安裝Node環(huán)境的,它本身依賴的最低版本是Node v6.4。但由于里面的大量異步調用,因此最好使用支持async/await的 v7.6或更高版本。

關于NodeJS的安裝這里就不介紹了,我這里使用的是windows環(huán)境,基本上是一路next就好了。

?

安裝puppeteer

建立Node工程后,首先需要引入puppeteer包,使用npm命令即可:

????npm install puppeteer

但這兒有一個需要注意的地方是,這個包會下載一個Chromium,由于網(wǎng)絡原因,這個過程是非常慢的,并且也會造成重復下載,每個工程都要下載一個,費時費力。

這個問題的解決方法是,安裝時添加--ignore-scripts命令跳過Chromium的下載,

????npm install puppeteer --ignore-scripts

然后指定我們安裝的Chrome或Chromium啟動。具體方法后面再介紹

?

示例:

首先還是來一個簡單的示例。

const?puppeteer?=?require('puppeteer');

async?function?run?()?{
????const?browser?=?await?puppeteer.launch({
????????headless:?false,
????????executablePath:?"C:\\Program?Files?(x86)\\Google\\Chrome\\Application\\chrome.exe"
????});
????const?page?=?await?browser.newPage();
????await?page.goto('https://tianfang.cnblogs.com');
????await?page.screenshot({?path:?'screen.png'?});
????await?browser.close();
};

run();

代碼很簡單,運行后就會啟動一個chrome,然后訪問我的博客,并且截圖保存。

?

啟動參數(shù):

首先我們來看前面代碼的啟動參數(shù):

const?browser?=?await?puppeteer.launch({
????headless:?false,
????executablePath:?"C:\\Program?Files?(x86)\\Google\\Chrome\\Application\\chrome.exe"
});

這里我設置了兩個參數(shù):

  • 是否開啟界面: headless
  • 如果把它設為true的話,則不顯示界面,理論上也有更好的性能。這里將其設置為false,主要是為了調試方便。

  • Chrome路徑: executablePath
  • 因為我安裝的時候跳過了Chromium的下載,因此這里顯式指定了chrome的路徑。

    在日常使用中,往往還有些其它參數(shù)要設置的。

  • 用戶數(shù)據(jù)路徑: userDataDir
  • 用戶數(shù)據(jù)路徑,這樣chrome可以使用你的一些設置和緩存

    注意: 如果用戶數(shù)據(jù)路徑中包含中文,記得將js保存為utf8格式,以免不認識

  • 其它參數(shù): args
  • 默認情況下,chrome是不加載擴展的,可以在args中啟用擴展

    args:?[
    ????`--disable-extensions-except=${ext}`,
    ????`--load-extension=${ext}`
    ]

    ?

    設置瀏覽器大小:

    默認瀏覽器大小是1024*768,可以通過page.setViewport設置其大小。

    page.setViewport({?width:?1024,?height:?768?});

    ?

    有了上面基礎后,前面代碼就改為如下所示了:

    const?puppeteer?=?require('puppeteer');

    const?chrome_exe?=?String.raw`${process.env["ProgramFiles(x86)"]}\Google\Chrome\Application\chrome.exe`;
    const?user_data_path?=?String.raw`${process.env.LocalAppData}\Google\Chrome\User?Data\Default`;
    async?function?run()?{
    ????const?browser?=?await?puppeteer.launch({
    ????????headless:?false,
    ????????userDataDir:?user_data_path,
    ????????executablePath:?chrome_exe
    ????});
    ????const?page?=?await?browser.newPage();
    ????page.setViewport({?width:?1600,?height:?800?});
    ????await?page.goto('https://tianfang.cnblogs.com');
    ????await?page.screenshot({?path:?'screen.png'?});
    ????await?browser.close();
    };

    run();

    ?

    小結:

    由于篇幅所限,本文就簡單的介紹到這里。具體進一步使用方法待下一篇文章中繼續(xù)介紹。感興趣的朋友可以看看這兩篇文章。(實際是同一篇文章,中文的那個是譯文)

  • https://github.com/emadehsan/thal
  • http://csbun.github.io/blog/2017/09/puppeteer/
  • 另外,雖然有Puppeteer珠玉在前,也還是有Chromeless這樣1w多start的受歡迎的第三方社區(qū)版本出現(xiàn),感興趣的朋友可以了解一下。

    ?

    轉載于:https://www.cnblogs.com/TianFang/p/9027187.html

    總結

    以上是生活随笔為你收集整理的使用Puppeteer进行数据抓取(一)——安装和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。