摘要:使用無(wú)頭瀏覽器做爬蟲有什么拿什么它是的一個(gè)用來(lái)操縱瀏覽器的的庫(kù),對(duì)的你沒(méi)看錯(cuò),就是操作瀏覽器的,細(xì)思極恐啊簡(jiǎn)單說(shuō)就是瀏覽器有的它都有了當(dāng)然有些功能也正在開發(fā)中可以注冊(cè),模擬登陸,設(shè)置操作事件,執(zhí)行腳本團(tuán)隊(duì)對(duì)其維護(hù),厲害了吧文檔地址安裝首先
使用chrome無(wú)頭瀏覽器做爬蟲 - 有什么拿什么 puppeteer
它是Node的一個(gè)用來(lái)操縱瀏覽器的API的庫(kù),對(duì)的你沒(méi)看錯(cuò),就是操作瀏覽器的,細(xì)思極恐啊安裝
簡(jiǎn)單說(shuō)就是瀏覽器有的它都有了(當(dāng)然有些功能也正在開發(fā)中)
可以注冊(cè),模擬登陸,設(shè)置cookie
操作dom事件,執(zhí)行js腳本
Chrome團(tuán)隊(duì)對(duì)其維護(hù),厲害了吧
文檔地址:https://github.com/GoogleChro...
首先Nodejs 的版本不能低于 v7.6.0, 因?yàn)槿际?async, await 異步操作
npm install puppeteer -S
出現(xiàn)安裝問(wèn)題的小伙伴可以試一試npm的內(nèi)置配置文件,當(dāng)前目錄下新建一個(gè).npmrc結(jié)尾的文件,內(nèi)容如下
registry=https://registry.npm.taobao.org chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver phantomjs_cdnurl=https://npm.taobao.org/dist/phantomjs electron_mirror=https://npm.taobao.org/mirrors/electron/ sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ puppeteer_download_host=https://cdn.npm.taobao.org/dist官網(wǎng)的demo
const puppeteer = require("puppeteer"); (async () => { // 創(chuàng)建一個(gè)瀏覽器實(shí)例 Browser 對(duì)象 const browser = await puppeteer.launch(); // 通過(guò)瀏覽器實(shí)例 Browser 對(duì)象創(chuàng)建頁(yè)面 Page 對(duì)象 const page = await browser.newPage(); // 通過(guò)url參數(shù)打開指定的頁(yè)面 await page.goto("https://example.com"); // 對(duì)頁(yè)面進(jìn)行截圖 await page.screenshot({path: "example.png"}); // 關(guān)閉瀏覽器 await browser.close(); })();先來(lái)個(gè)最最基本的抓取 實(shí)戰(zhàn)_抓取2345小說(shuō)站任意書籍的章節(jié)列表
上干貨,都在注釋里了兩個(gè)箭頭標(biāo)記的
觀察url,.html之前的數(shù)字就是抓取書籍的bookId
章節(jié)列表所在容器標(biāo)簽
const puppeteer = require("puppeteer"); (async ()=>{ try{ // 創(chuàng)建一個(gè)瀏覽器實(shí)例 Browser 對(duì)象 let browser = await puppeteer.launch({ // 是否不顯示瀏覽器, 為true則不顯示 "headless": false, }); // 通過(guò)瀏覽器實(shí)例 Browser 對(duì)象創(chuàng)建頁(yè)面 Page 對(duì)象 let page = await browser.newPage(); // 設(shè)置瀏覽器信息 const UA = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/63.0.3239.84 Chrome/63.0.3239.84 Safari/537.36"; await Promise.all([ page.setUserAgent(UA), // 允許運(yùn)行js page.setJavaScriptEnabled(true), // 設(shè)置頁(yè)面視口的大小 page.setViewport({width: 1100, height: 1080}), ]); // 地址 let chapter_list_url = `http://book.km.com/chapterlist/396353.html` // 打開章節(jié)列表 await page.goto(chapter_list_url); // 使用css選擇器的方式 let content= await page.$eval("#xtopjsinfo > div.wrapper > div.container > div.catalog > div.catalog_bd", el => el.innerText); console.log(content); }catch(err){ console.log(err) } })()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/107035.html
摘要:寫爬蟲抓取頁(yè)面是不是還需要等待頁(yè)面有數(shù)據(jù)了才能抓取,那么頁(yè)面渲染的這段時(shí)間雖然不長(zhǎng)但架不住多啊是不是可以省去呢時(shí)間要好好的利用起來(lái)基礎(chǔ)不太了解的可以參考我這篇簡(jiǎn)單使用的文章使用抓取接口攔截?cái)?shù)據(jù)這里有小伙伴就要說(shuō)了我都知道接口了直接去請(qǐng)求不就 寫爬蟲抓取頁(yè)面是不是還需要等待頁(yè)面有數(shù)據(jù)了才能抓取,那么頁(yè)面渲染的這段時(shí)間(雖然不長(zhǎng)但架不住多啊)是不是可以省去呢 時(shí)間要好好的利用起來(lái) 基礎(chǔ)不太...
摘要:首先介紹是一個(gè)庫(kù),他提供了一組用來(lái)操縱的默認(rèn)也就是無(wú)的,也可以配置為有有點(diǎn)類似于,但是官方團(tuán)隊(duì)進(jìn)行維護(hù)的,前景更好。使用,相當(dāng)于同時(shí)具有和的能力,應(yīng)用場(chǎng)景會(huì)非常多。 首先介紹Puppeteer Puppeteer是一個(gè)node庫(kù),他提供了一組用來(lái)操縱Chrome的API(默認(rèn)headless也就是無(wú)UI的chrome,也可以配置為有UI) 有點(diǎn)類似于PhantomJS,但Puppet...
摘要:利用空閑時(shí)間,學(xué)習(xí)了下爬蟲,我也想爬取下網(wǎng)上的資源部分參數(shù)名稱參數(shù)類型參數(shù)說(shuō)明在請(qǐng)求的過(guò)程中是否忽略報(bào)錯(cuò)信息,默認(rèn)為是否以無(wú)頭的模式運(yùn)行,也就是不顯示,默認(rèn)為可執(zhí)行文件的路徑,默認(rèn)是使用它自帶的如果你想指定一個(gè)自己的路徑,可以通過(guò)這個(gè)參數(shù)設(shè) 利用空閑時(shí)間,學(xué)習(xí)了下puppeteer爬蟲,我也想爬取下網(wǎng)上的資源 1.部分api puppeteer.launch(options) 參數(shù)...
摘要:目標(biāo)網(wǎng)站西瓜視頻項(xiàng)目功能下載頭條號(hào)維辰財(cái)經(jīng)下的最新個(gè)視頻項(xiàng)目地址地址姊妹項(xiàng)目批量下載美女圖集簡(jiǎn)介一般批量爬取視頻或者圖片的套路是,使用爬蟲獲得文件鏈接集合,然后通過(guò)等方法逐個(gè)保存文件。然而在批量下載時(shí),逐個(gè)手動(dòng)的獲取視頻鏈接顯然不可取。 目標(biāo)網(wǎng)站:西瓜視頻 項(xiàng)目功能:下載頭條號(hào)【維辰財(cái)經(jīng)】下的最新20個(gè)視頻 項(xiàng)目地址:Github 地址 姊妹項(xiàng)目:批量下載美女圖集 簡(jiǎn)介 一般批量...
閱讀 3512·2021-11-15 11:38
閱讀 825·2021-11-08 13:27
閱讀 2235·2021-07-29 14:50
閱讀 2970·2019-08-29 13:06
閱讀 838·2019-08-29 11:22
閱讀 2408·2019-08-29 11:04
閱讀 3499·2019-08-28 18:23
閱讀 890·2019-08-26 13:46