摘要:使用無頭瀏覽器做爬蟲有什么拿什么它是的一個用來操縱瀏覽器的的庫,對的你沒看錯,就是操作瀏覽器的,細(xì)思極恐啊簡單說就是瀏覽器有的它都有了當(dāng)然有些功能也正在開發(fā)中可以注冊,模擬登陸,設(shè)置操作事件,執(zhí)行腳本團隊對其維護,厲害了吧文檔地址安裝首先
使用chrome無頭瀏覽器做爬蟲 - 有什么拿什么 puppeteer
它是Node的一個用來操縱瀏覽器的API的庫,對的你沒看錯,就是操作瀏覽器的,細(xì)思極恐啊安裝
簡單說就是瀏覽器有的它都有了(當(dāng)然有些功能也正在開發(fā)中)
可以注冊,模擬登陸,設(shè)置cookie
操作dom事件,執(zhí)行js腳本
Chrome團隊對其維護,厲害了吧
文檔地址:https://github.com/GoogleChro...
首先Nodejs 的版本不能低于 v7.6.0, 因為全都是 async, await 異步操作
npm install puppeteer -S
出現(xiàn)安裝問題的小伙伴可以試一試npm的內(nèi)置配置文件,當(dāng)前目錄下新建一個.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)建一個瀏覽器實例 Browser 對象 const browser = await puppeteer.launch(); // 通過瀏覽器實例 Browser 對象創(chuàng)建頁面 Page 對象 const page = await browser.newPage(); // 通過url參數(shù)打開指定的頁面 await page.goto("https://example.com"); // 對頁面進行截圖 await page.screenshot({path: "example.png"}); // 關(guān)閉瀏覽器 await browser.close(); })();先來個最最基本的抓取 實戰(zhàn)_抓取2345小說站任意書籍的章節(jié)列表
上干貨,都在注釋里了兩個箭頭標(biāo)記的
觀察url,.html之前的數(shù)字就是抓取書籍的bookId
章節(jié)列表所在容器標(biāo)簽
const puppeteer = require("puppeteer"); (async ()=>{ try{ // 創(chuàng)建一個瀏覽器實例 Browser 對象 let browser = await puppeteer.launch({ // 是否不顯示瀏覽器, 為true則不顯示 "headless": false, }); // 通過瀏覽器實例 Browser 對象創(chuàng)建頁面 Page 對象 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), // 允許運行js page.setJavaScriptEnabled(true), // 設(shè)置頁面視口的大小 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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/107035.html
摘要:寫爬蟲抓取頁面是不是還需要等待頁面有數(shù)據(jù)了才能抓取,那么頁面渲染的這段時間雖然不長但架不住多啊是不是可以省去呢時間要好好的利用起來基礎(chǔ)不太了解的可以參考我這篇簡單使用的文章使用抓取接口攔截數(shù)據(jù)這里有小伙伴就要說了我都知道接口了直接去請求不就 寫爬蟲抓取頁面是不是還需要等待頁面有數(shù)據(jù)了才能抓取,那么頁面渲染的這段時間(雖然不長但架不住多啊)是不是可以省去呢 時間要好好的利用起來 基礎(chǔ)不太...
摘要:首先介紹是一個庫,他提供了一組用來操縱的默認(rèn)也就是無的,也可以配置為有有點類似于,但是官方團隊進行維護的,前景更好。使用,相當(dāng)于同時具有和的能力,應(yīng)用場景會非常多。 首先介紹Puppeteer Puppeteer是一個node庫,他提供了一組用來操縱Chrome的API(默認(rèn)headless也就是無UI的chrome,也可以配置為有UI) 有點類似于PhantomJS,但Puppet...
摘要:利用空閑時間,學(xué)習(xí)了下爬蟲,我也想爬取下網(wǎng)上的資源部分參數(shù)名稱參數(shù)類型參數(shù)說明在請求的過程中是否忽略報錯信息,默認(rèn)為是否以無頭的模式運行,也就是不顯示,默認(rèn)為可執(zhí)行文件的路徑,默認(rèn)是使用它自帶的如果你想指定一個自己的路徑,可以通過這個參數(shù)設(shè) 利用空閑時間,學(xué)習(xí)了下puppeteer爬蟲,我也想爬取下網(wǎng)上的資源 1.部分api puppeteer.launch(options) 參數(shù)...
摘要:目標(biāo)網(wǎng)站西瓜視頻項目功能下載頭條號維辰財經(jīng)下的最新個視頻項目地址地址姊妹項目批量下載美女圖集簡介一般批量爬取視頻或者圖片的套路是,使用爬蟲獲得文件鏈接集合,然后通過等方法逐個保存文件。然而在批量下載時,逐個手動的獲取視頻鏈接顯然不可取。 目標(biāo)網(wǎng)站:西瓜視頻 項目功能:下載頭條號【維辰財經(jīng)】下的最新20個視頻 項目地址:Github 地址 姊妹項目:批量下載美女圖集 簡介 一般批量...
閱讀 3566·2021-11-15 11:38
閱讀 909·2021-11-08 13:27
閱讀 2333·2021-07-29 14:50
閱讀 3049·2019-08-29 13:06
閱讀 892·2019-08-29 11:22
閱讀 2467·2019-08-29 11:04
閱讀 3568·2019-08-28 18:23
閱讀 958·2019-08-26 13:46