最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何用Node寫頁(yè)面爬蟲的工具集

 更新時(shí)間:2018年10月26日 11:54:02   作者:SP-Lyu  
這篇文章主要介紹了如何用Node寫頁(yè)面爬蟲的工具集,主要介紹了三種方法,分別是Puppeteer、cheerio和Auto.js,感興趣的小伙伴們可以參考一下

最近做了幾個(gè)寫爬蟲的小項(xiàng)目(從頁(yè)面端到APP端的都有),在網(wǎng)上搜尋了一番好用的爬蟲工具,做了個(gè)工具集整理:

Puppeteer

簡(jiǎn)介

Puppeteer 是一個(gè)Node庫(kù),它提供了一個(gè)高級(jí) API 來(lái)通過(guò) DevTools協(xié)議控制Chromium或Chrome。簡(jiǎn)單點(diǎn)說(shuō),就是使用Node命令控制一個(gè)無(wú)需渲染至用戶界面的瀏覽器。

與使用 PhantomJS 搭配 Python 進(jìn)行爬蟲抓取類似,其原理也是去完全地模擬一個(gè)瀏覽器進(jìn)行頁(yè)面的渲染,從而抓取其中某些特定的內(nèi)容。

特性

Puppeteer 可以完整地模擬一個(gè)瀏覽器的行為,并且可以進(jìn)行截圖、攔截瀏覽器請(qǐng)求、獲取Cookie、通過(guò)Node注入JS代碼等操作,使用Chrome瀏覽器開發(fā)者工具能做到的,Puppeteer也能做到。

使用起來(lái)也十分的簡(jiǎn)單,以下是官方的例子:

const puppeteer = require('puppeteer');

(async () => {
 const browser = await puppeteer.launch();
 const page = await browser.newPage();
 await page.goto('https://example.com');
 await page.screenshot({path: 'example.png'});

 await browser.close();
})();

在GitHub上放了一份自己寫的使用Puppeteer獲取微博cookie的代碼,歡迎查看:

https://github.com/SP-Lyu/puppeteer_weibo_cookie/blob/master/index.js

由于 Puppeteer 基于Chromium,每次都需要載入頁(yè)面再進(jìn)行頁(yè)面分析,性能十分有限,下面提到的 cheerio 則可以從另一層面解決這個(gè)問(wèn)題。

文檔

GitHub 

中文API地址

cheerio

cheerio 是一個(gè)輕型靈活,類jQuery的對(duì)HTML元素分析操作的工具。在進(jìn)行一些server端渲染的頁(yè)面以及一些簡(jiǎn)單的小頁(yè)面的爬取時(shí), cheerio 十分好用且高效。

特性

cheerio 包括了jQuery的核心子集,意味著可以直接使用jQuery的API進(jìn)行元素的操控,官方的例子:

const cheerio = require('cheerio')
const $ = cheerio.load('<h2 class="title">Hello world</h2>')

$('h2.title').text('Hello there!')
$('h2').addClass('welcome')

$.html()
//=> <h2 class="title welcome">Hello there!</h2>

自己寫的獲取某個(gè)網(wǎng)站的所有a鏈接:

const cheerio = require('cheerio');
const get = function(){/*HTTP get請(qǐng)求...*/}
(async ()=>{
 const html = await get(`http://example.com`);
 const $ = cheerio.load(html);
 const $dom_arr = $('a');
 $dom_arr.each((index, elem)=>{
  const url = $(elem).attr('href') || '';
  console.log(url);
 });
})();

文檔

GitHub

Auto.js

國(guó)人開發(fā)的,使用js編寫代碼操作Android設(shè)備的自動(dòng)化工具,對(duì)于爬取某些加固措施較好的APP來(lái)說(shuō)十分有用,而且有非常完善的文檔以及社區(qū),十分良心。

使用Auto.js進(jìn)行設(shè)備自動(dòng)化操作,再通過(guò)代理進(jìn)行請(qǐng)求數(shù)據(jù)的獲取,能繞開加固中難以破解的加密串。

特性

作為爬蟲工具,好處有:

  1. 采用JavaScript作為腳本語(yǔ)言開發(fā),JS開發(fā)者0成本接入;
  2. 兼容性良好,大多數(shù)任務(wù)不需要root權(quán)限;
  3. 自帶界面分析工具,方便定位需要操作的元素。

從Auto.js載入某個(gè)APP,并點(diǎn)擊進(jìn)入某個(gè)頻道的例子:

// 聲明環(huán)境
auto();
// 設(shè)備常亮
device.keepScreenDim();
// 調(diào)起APP
launchApp('頭條');
sleep(10000);
// 找到某個(gè)頻道,并點(diǎn)擊進(jìn)入
var rect = text('視頻').findOnce().bounds();
var x = rect.centerX();
var y = rect.centerY();
click(x, y);
// 點(diǎn)擊進(jìn)入詳情,使用代理抓取并處理請(qǐng)求...
...

文檔

GitHub
中文文檔
社區(qū)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nodejs實(shí)現(xiàn)一個(gè)word文檔解析器思路詳解

    nodejs實(shí)現(xiàn)一個(gè)word文檔解析器思路詳解

    這篇文章主要介紹了nodejs實(shí)現(xiàn)一個(gè)word文檔解析器的思路詳解,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • Node.js中路徑處理模塊path詳解

    Node.js中路徑處理模塊path詳解

    相信大家都知道在nodejs中,path是個(gè)使用頻率很高,但卻讓人又愛(ài)又恨的模塊。因?yàn)椴糠治臋n說(shuō)的不夠清晰,還有部分因?yàn)榻涌诘钠脚_(tái)差異性。本文就給大家詳細(xì)介紹下關(guān)于Node.js中的路徑處理模塊path,希望能對(duì)大家學(xué)習(xí)或者使用模塊path有所幫助,下面來(lái)一起看看吧。
    2016-11-11
  • Node.js模塊化的使用詳細(xì)介紹

    Node.js模塊化的使用詳細(xì)介紹

    nodejs中的模塊化是指將每個(gè)js文件會(huì)被認(rèn)為單獨(dú)一個(gè)的模塊。模塊之間是互相不可見(jiàn)的。如果一個(gè)模塊需要使用另一個(gè)模塊,那么需要通過(guò)指定語(yǔ)法來(lái)引入要使用的模塊,而且只能使用引入模塊所暴露的內(nèi)容
    2022-08-08
  • 手把手教你把nodejs部署到linux上跑出hello world

    手把手教你把nodejs部署到linux上跑出hello world

    本篇文章主要介紹了手把手教你把nodejs部署到linux上跑出hello world,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-06-06
  • node express如何實(shí)現(xiàn)json轉(zhuǎn)Excel

    node express如何實(shí)現(xiàn)json轉(zhuǎn)Excel

    這篇文章主要介紹了node express如何實(shí)現(xiàn)json轉(zhuǎn)Excel問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • node.js中的fs.createWriteStream方法使用說(shuō)明

    node.js中的fs.createWriteStream方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.createWriteStream方法使用說(shuō)明,本文介紹了fs.createWriteStream方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Node發(fā)出HTTP POST請(qǐng)求的方法實(shí)例小結(jié)

    Node發(fā)出HTTP POST請(qǐng)求的方法實(shí)例小結(jié)

    這篇文章主要介紹了Node發(fā)出HTTP POST請(qǐng)求的方法,結(jié)合實(shí)例形式總結(jié)分析了三種常用的post請(qǐng)求操作方法,以及相關(guān)庫(kù)操作注意事項(xiàng),需要的朋友可以參考下
    2023-05-05
  • 創(chuàng)建簡(jiǎn)單的node服務(wù)器實(shí)例(分享)

    創(chuàng)建簡(jiǎn)單的node服務(wù)器實(shí)例(分享)

    下面小編就為大家?guī)?lái)一篇?jiǎng)?chuàng)建簡(jiǎn)單的node服務(wù)器實(shí)例(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Node.js?操作本地文件及深入了解fs內(nèi)置模塊

    Node.js?操作本地文件及深入了解fs內(nèi)置模塊

    這篇文章主要介紹了Node.js?操作本地文件及深入了解fs內(nèi)置模塊,node.js作為服務(wù)端應(yīng)用,肯定少不了對(duì)本地文件的操作,像創(chuàng)建一個(gè)目錄、創(chuàng)建一個(gè)文件、讀取文件內(nèi)容等都是我們開發(fā)中經(jīng)常需要用到的功能
    2022-09-09
  • nodejs微信開發(fā)之接入指南

    nodejs微信開發(fā)之接入指南

    這篇文章主要介紹了nodejs微信開發(fā)之接入指南,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03

最新評(píng)論

潼关县| 江津市| 城口县| 本溪| 怀化市| 轮台县| 原平市| 扎兰屯市| 金门县| 胶州市| 远安县| 华安县| 黑河市| 恩施市| 娄底市| 徐汇区| 连江县| 高淳县| 河间市| 昭苏县| 大竹县| 海宁市| 肇源县| 河西区| 丘北县| 泰和县| 西乡县| 永丰县| 右玉县| 梓潼县| 沁水县| 珠海市| 内丘县| 民和| 五常市| 平果县| 漠河县| 蓬安县| 凉山| 淳安县| 中江县|