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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用Chrome快速实现数据的抓取(四)——优点

發(fā)布時(shí)間:2024/4/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Chrome快速实现数据的抓取(四)——优点 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

些一個(gè)抓取WEB頁(yè)面的數(shù)據(jù)程序比較簡(jiǎn)單,大多數(shù)語(yǔ)言都有相應(yīng)的HTTP庫(kù),一個(gè)簡(jiǎn)單的請(qǐng)求響應(yīng)即可,程序發(fā)送Http請(qǐng)求給Web服務(wù)器,服務(wù)器返回HTML文件。交互方式如下:?

  

在使用DevProtocol驅(qū)動(dòng)Chrome抓取數(shù)據(jù)時(shí),交互過(guò)程則如下圖所示:

  

此時(shí)Chrome在中間充當(dāng)了一個(gè)代理的角色,看上去變得更加復(fù)雜了,實(shí)際上卻對(duì)于我們的蜘蛛程序大有幫助。本文就簡(jiǎn)單的總結(jié)下這種方式存在如下優(yōu)點(diǎn)。

獲取動(dòng)態(tài)生成的網(wǎng)頁(yè)內(nèi)容

現(xiàn)在很多的網(wǎng)頁(yè)內(nèi)容的內(nèi)容并不是一開是就能直接通過(guò)最初的Http請(qǐng)求直接獲取到的,而是在返回的html頁(yè)面中通過(guò)JS加載資源及計(jì)算動(dòng)態(tài)生成的頁(yè)面。采用這種方式的原因有很多,有的是為了更好的用戶體驗(yàn),有的是因?yàn)殚_發(fā)框架,有的是為了節(jié)省帶寬,也有的則單純是為了加密頁(yè)面內(nèi)容,從而實(shí)現(xiàn)反爬蟲的功能。

不管是因?yàn)槭裁丛?#xff0c;它使得本來(lái)很簡(jiǎn)單的單一"請(qǐng)求-響應(yīng)"式的交互過(guò)程變得復(fù)雜起來(lái),傳統(tǒng)的一次交互即可完成所有的請(qǐng)求變成了如下形式:

  

動(dòng)態(tài)加載給傳統(tǒng)的數(shù)據(jù)采集造成了不小的障礙,但往往需要分析頁(yè)面加載過(guò)程,分析JS,并在程序中嵌入js引擎,模擬瀏覽器執(zhí)行相應(yīng)的腳本,獲取最終的數(shù)據(jù)。這是一個(gè)非常費(fèi)時(shí)費(fèi)力的過(guò)程,并且不容易分析全。

為了更方便解析這種動(dòng)態(tài)網(wǎng)頁(yè),一些爬蟲引擎開始引入了Dom解析和JS執(zhí)行能力,模擬瀏覽器來(lái)解析并獲取相關(guān)資源。但由于這一過(guò)程非常復(fù)雜,往往這些功能并不是非常完善,有不少的坑。

現(xiàn)在,通過(guò)Chrome的方式就是這種解析頁(yè)面的方式的集大成版本了,由于Chrome本身就是瀏覽器,具有完善的頁(yè)面解析能力,處理起來(lái)如魚得水。解析過(guò)程由chrome代理完成,我們只需要從chrome里獲取最后解析完成的結(jié)果即可。

有效的應(yīng)對(duì)反爬蟲策略

最簡(jiǎn)單的反爬機(jī)制,就是檢查HTTP請(qǐng)求的Headers信息,包括User-Agent, Referer、Cookies等,根據(jù)手寫的Http請(qǐng)求報(bào)文頭和常用的瀏覽器報(bào)文頭的差異來(lái)反爬蟲。這些防止初級(jí)爬蟲非常有效,但Chrome本身就是一個(gè)標(biāo)準(zhǔn)瀏覽器,對(duì)于這類反爬機(jī)制天生免疫。

另外一種反爬機(jī)制是上文所說(shuō)的動(dòng)態(tài)加載,基于上面的解釋,這個(gè)對(duì)Chrome來(lái)說(shuō)也是天生免疫的。

當(dāng)然,反爬策略還有很多,如限制IP訪問(wèn)次數(shù),限制訪問(wèn)頻率,驗(yàn)證碼、等方式來(lái)反爬。這些雖然Chrome不直接支持,但應(yīng)對(duì)起來(lái)也比傳統(tǒng)的Http請(qǐng)求方便得多的。后面文章中會(huì)陸續(xù)介紹,這里就不一一展開了。

DOM操作能力

Chrome有完善的Dom操作能力,在Chrome DevTools控制臺(tái)中能執(zhí)行的操作基本都可以在程序中通過(guò)DevProtocol完成,為我們的APP添加了完美的DOM操作能力, 很多以前需要分析HTML才能獲取的數(shù)據(jù)現(xiàn)在可以直接通過(guò)Jquery之類的js函數(shù)完成。并且可以直接格式化為JSON輸出,方便了不止一點(diǎn)半點(diǎn)。

和服務(wù)器交互更容易

很多時(shí)候,有的頁(yè)面是需要一些交互才能獲取到的,如登陸。

由于Chrome具有JS執(zhí)行能力,我們可以通過(guò)一些簡(jiǎn)單的JS腳本非常容易的執(zhí)行。例如,園子的登陸就可以通過(guò)如下腳本實(shí)現(xiàn):

????$("#input1")[0].value = "userName";
????$("#input2")[0].value = "password";
????$("#signin")[0].click();

有的網(wǎng)站需要驗(yàn)證碼來(lái)防止爬蟲程序,我們甚至可以通過(guò)在chrome中手動(dòng)打碼的這種自動(dòng)結(jié)合手動(dòng)的方式快速實(shí)現(xiàn)數(shù)據(jù)抓取。如果要開發(fā)出支持接入打碼平臺(tái)或智能識(shí)別平臺(tái)的接口,也遠(yuǎn)比傳統(tǒng)的蜘蛛程序容易的多。

另外,Chrome也提供了非常豐富的API模擬鍵盤和鼠標(biāo)的輸入的接口,用起來(lái)非常方便。????

開發(fā)調(diào)試方便

開發(fā)爬蟲程序往往是一個(gè)反復(fù)調(diào)試的過(guò)程,由于我們是直接解析Chrome獲取的數(shù)據(jù),由于Chrome DevTool本身就是一個(gè)強(qiáng)大的調(diào)試工具。這樣大大加速了我們的開發(fā)過(guò)程。

我們可以通過(guò)首先在Chrome中通過(guò)DevTools查看解析我們的頁(yè)面,通過(guò)控制臺(tái)程序驗(yàn)證編寫的腳本。用Chrome就可以完成大部分腳本的開發(fā),而這一部分往往是不能復(fù)用,并且非常花時(shí)間的。這相當(dāng)于我們獲取了一個(gè)強(qiáng)大的調(diào)試工具,可以節(jié)省不少時(shí)間。

另外,Chrome也是前端人員非常熟悉的工具,我們也可以把腳本開發(fā)的工作交給前端人員,他們可以更高效的開發(fā)腳本,大幅提高開發(fā)效率。

缺點(diǎn)

說(shuō)了這么多的優(yōu)點(diǎn),最后我們來(lái)說(shuō)一說(shuō)它的缺點(diǎn),這種方式主要的缺點(diǎn)還是性能。

傳統(tǒng)的爬蟲是非常輕量級(jí)的,就是一個(gè)傳統(tǒng)的tcp的socket程序,通過(guò)異步socket的方式可以非常容易的實(shí)現(xiàn)成千上萬(wàn)的并發(fā)數(shù)的,并且只加載了需要的信息,性能非常高。

而通過(guò)驅(qū)動(dòng)chrome的方式是通過(guò)chrome獲取服務(wù)器端的數(shù)據(jù)的,一來(lái)加載了不必要的圖片,樣式,廣告等文件造成了帶寬的浪費(fèi),另外也對(duì)網(wǎng)頁(yè)進(jìn)行了渲染造成了CPU的開銷,雖然可以通過(guò)插件減少不必要的文件加載和headless的方式減少開銷,但相對(duì)傳統(tǒng)的請(qǐng)求應(yīng)答方式來(lái)說(shuō)仍然是一個(gè)重量級(jí)的獲取方式。對(duì)于小規(guī)模的采集可能還問(wèn)題不大,但如果要進(jìn)行類似搜索引擎的方式的海量數(shù)據(jù)采集可能就有點(diǎn)吃不消了。

參考文章:

  • 普通反爬蟲機(jī)制的應(yīng)對(duì)策略
  • 常見的反爬蟲和應(yīng)對(duì)方法
  • Google 爬蟲如何抓取 JavaScript 的?

轉(zhuǎn)載于:https://www.cnblogs.com/TianFang/p/7148043.html

總結(jié)

以上是生活随笔為你收集整理的使用Chrome快速实现数据的抓取(四)——优点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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