鍍金池/ 教程/ Linux/ 從本章開始,我們來講講爬蟲的優(yōu)化.不知道你有沒有遇到這種情況,那就是別人的一天能上百萬數(shù)量級還都是優(yōu)質(zhì)數(shù)據(jù),而同等配置的你的爬蟲
本章節(jié)將開始講述那些廠商為何確保自己的利益是怎么樣進(jìn)行反爬的.實(shí)話說,與對方的反爬措施做斗爭可以稱得上開發(fā)過程中為數(shù)不多的趣味了
該小節(jié)與上一節(jié)差不多,繼續(xù)以介紹為主.數(shù)據(jù)模型訓(xùn)練材料是指通過爬蟲爬取的具有關(guān)聯(lián)性的特定數(shù)據(jù)來作為各種數(shù)據(jù)模型的訓(xùn)練材料,從而得
? 這一小節(jié)重點(diǎn)介紹兩個利器phantomjs和selenium.通過利用這些工具可以破解本地JS環(huán)境的反爬措施.
從上一章節(jié)中,我們得知我們現(xiàn)在已經(jīng)得到了鏈接,下面我們就可以通過GET/POST方式發(fā)送請求,得到目標(biāo)網(wǎng)站的回應(yīng).然后根據(jù)返回的
這一節(jié)介紹一下通過JSON進(jìn)行前后端交互的爬取技巧和一些我個人覺得挺有意思的反爬措施.
從本章開始,我們來講講爬蟲的優(yōu)化.不知道你有沒有遇到這種情況,那就是別人的一天能上百萬數(shù)量級還都是優(yōu)質(zhì)數(shù)據(jù),而同等配置的你的爬蟲
經(jīng)過了前面幾個小節(jié)的操作,現(xiàn)在我們手里已經(jīng)有了爬蟲.可以為我們爬取成堆的數(shù)據(jù)了,所以到了最后一步,是時候找個地方存放起來了,不然
本節(jié)主要介紹了在遇到性能瓶頸的時候,我們有什么辦法來解決
該小節(jié)會從定義和用途上介紹一下搜索引擎爬蟲.搜索引擎爬蟲在整體用途中算少數(shù).它主要是看robot.txt來獲取頁面的信息.然后盡
本節(jié)主要介紹了市面上大多數(shù)的反爬手段..
本節(jié)主要介紹了寫作動機(jī)然后表達(dá)了一下我對爬蟲的一些看法.
該節(jié)我們來講講爬蟲中的一個難點(diǎn),并發(fā).并發(fā)是什么,并發(fā)即同時啟動多個進(jìn)程/線程來運(yùn)行所給予的任務(wù).那進(jìn)程/線程又有都是什么呢?我
本節(jié)主要介紹了爬蟲可以承擔(dān)的一些工作
從上一章我們知道,獲取鏈接是爬蟲工作的第一步.
一轉(zhuǎn)眼進(jìn)這家公司也快一年多了,總想寫點(diǎn)什么來記錄一下最近學(xué)到的不少.畢竟,學(xué)習(xí)的最后一節(jié)是輸出.
本節(jié)主要介紹了怎么樣才能提高爬蟲的效率.
本小節(jié)開始介紹之前多次提到過的消息隊列。再講之前,問大家各問題.你們遇到過有些時候,爬蟲有很大一部分時間抓取解析模塊是空閑的情況
這節(jié)我們介紹爬蟲能用來干什么.如今每天互聯(lián)網(wǎng)上的流量足足有10億GB左右,不可能毫無選擇的全部爬取下來,這是要根據(jù)我們自己的需求
在文章的最開頭,我來談?wù)勁老x我是怎么入門的,希望能對你們有些啟示.我從零基礎(chǔ)開始入門的時候,是看著各種雜七雜八的教程過來的.這個
?從這一小節(jié)開始,我們開始了解常用的幾個反爬手段.首先是封禁類.我們經(jīng)常會遇到爬取過度而導(dǎo)致IP被封或者是賬號被封。你知道是怎么

從本章開始,我們來講講爬蟲的優(yōu)化.不知道你有沒有遇到這種情況,那就是別人的一天能上百萬數(shù)量級還都是優(yōu)質(zhì)數(shù)據(jù),而同等配置的你的爬蟲

從本章開始,我們來講講爬蟲的優(yōu)化.不知道你有沒有遇到這種情況,那就是別人的一天能上百萬數(shù)量級還都是優(yōu)質(zhì)數(shù)據(jù),而同等配置的你的爬蟲一天只有十幾萬而且質(zhì)量還是參差不齊呢?那就是你沒有還好的優(yōu)化爬蟲.在追求爬蟲的極致性能的今天,如何優(yōu)化爬蟲都將是爬蟲愛好者們面對的重要問題。那么,從現(xiàn)在開始,我們將逐步的從起始出發(fā),一步步的為爬蟲更好的爬取信息而努力.

首先,先來聊聊爬蟲是如何從一條命令進(jìn)化到如今的大規(guī)模商用爬蟲的.因?yàn)橹挥辛私饬伺老x的構(gòu)造,我們才能得心應(yīng)手,看病下藥,找到爬蟲的痛點(diǎn),一一解決.首先,最簡單的爬蟲是wget.不要懷疑,wget也是爬蟲,不過是沒有解析模塊和地址調(diào)度模塊的爬蟲罷了.但這樣有個問題,這樣無用數(shù)據(jù)太多而且太占存儲空間.所以我們得解析頁面,通過HTML DOM等各種解析工具從而在讀取到網(wǎng)頁的同時只取出我們所需的數(shù)據(jù),而其他的就丟棄.這樣就極大的減少了存儲空間.所以,爬蟲本身的基本架構(gòu)就類似與這發(fā)展史,分成這么幾個部分:地址模塊.下載與解析模塊.存儲模塊以及核心中樞模塊.

地址模塊主要負(fù)責(zé)提供需要爬取的目標(biāo)地址,不管該地址是爬取過程中發(fā)散得到的還是原有的種子鏈接.通過各種算法決定下一個提供給下載模塊的地址是什么,起到地址調(diào)度分配的功能.這方面我們可以通過url去重以及算法優(yōu)化來提升性能和可用數(shù)據(jù)的占比.

下載解析模塊通過發(fā)送GET/POST HTTP請求給目標(biāo)服務(wù)器來獲得回應(yīng),然后通過上述的各種方式來獲取我們想得到的數(shù)據(jù)。這方面我們可以通過建立DOM樹使用HTML DOM來靈活的選取HTML中的各個元素.

存儲模塊主要負(fù)責(zé)將獲取到的數(shù)據(jù)通過各種方式存儲起來.一般來說,存儲是爬蟲整體架構(gòu)中消耗性能最多的。所以,我們在這上面要下的功夫也就最多.我們的對策就是通過ORM實(shí)現(xiàn)了批量存儲,減輕了存儲壓力然后通過引入中間件,使得解析與存儲模塊分離極大的加速了爬蟲的運(yùn)行效率.

核心中樞模塊是負(fù)責(zé)爬蟲整體的運(yùn)轉(zhuǎn)和各模塊之間的調(diào)度.屬于控制模塊,不參與實(shí)際數(shù)據(jù)的處理.

大概運(yùn)行邏輯是這樣的:png

從流程圖中我們也可以看到,現(xiàn)在各模塊都纏繞在一起,這樣就會造成很大隱患.例如爬蟲部分模塊癱瘓后會蔓延至整體模塊..所以,我們要引入中間件,不僅僅是為了分離模塊來達(dá)到加速的問題,同時通過將各模塊之間拆散用中間件相連,可以有效的防止整體程序都出錯的可能.而加入中間件之后的流程圖見應(yīng)對性能瓶頸的消息隊列章.

爬蟲的構(gòu)造我們已經(jīng)明了了。那么你心在心里有了什么優(yōu)化的想法呢?沒有也不要緊,接下來我們會逐步的根據(jù)爬蟲的不同模塊進(jìn)行針對性的優(yōu)化.敬請期待.