国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

如何用Node寫頁面爬蟲的工具集

2024-05-06 16:46:36
字體:
供稿:網(wǎng)友

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

Puppeteer

簡介

Puppeteer 是一個Node庫,它提供了一個高級 API 來通過 DevTools協(xié)議控制Chromium或Chrome。簡單點說,就是使用Node命令控制一個無需渲染至用戶界面的瀏覽器。

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

特性

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

使用起來也十分的簡單,以下是官方的例子:

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,每次都需要載入頁面再進行頁面分析,性能十分有限,下面提到的 cheerio 則可以從另一層面解決這個問題。

文檔

GitHub 

中文API地址 

cheerio

cheerio 是一個輕型靈活,類jQuery的對HTML元素分析操作的工具。在進行一些server端渲染的頁面以及一些簡單的小頁面的爬取時, cheerio 十分好用且高效。

特性

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

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>

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

const cheerio = require('cheerio');const get = function(){/*HTTP get請求...*/}(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

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

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

特性

作為爬蟲工具,好處有:

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

從Auto.js載入某個APP,并點擊進入某個頻道的例子:

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

文檔

GitHub 
中文文檔 
社區(qū)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 五台县| 南漳县| 山西省| 沙湾县| 百色市| 威信县| 高碑店市| 滕州市| 南汇区| 井陉县| 句容市| 仙游县| 孙吴县| 华宁县| 金坛市| 灵丘县| 大渡口区| 龙江县| 邵阳市| 通化县| 钟祥市| 陇南市| 夏津县| 正宁县| 新巴尔虎左旗| 中牟县| 含山县| 民县| 锦州市| 阿拉善盟| 黑山县| 奉贤区| 彝良县| 青田县| 唐山市| 萍乡市| 襄城县| 沭阳县| 怀集县| 澄城县| 连平县|