爬虫技术基础
“?爬蟲的簡單介紹。”
爬蟲,即spider,是一種按一定規則,自動從網絡上抓取并提取特定信息的程序或者腳本。
互聯網絡,浩瀚無際,頁面紛繁,包羅萬象,直接導致信息的過載,人無法用雙手雙眼,從中提取我們感興趣有價值的內容。信息處理自動化的迫切需求導致了爬蟲的產生和廣泛應用。
對協議的分析還原而言,不僅僅是從流量中分析特定的數據,我們的眼光,應更具前瞻性,被動地分析流量,工作永遠無止境,使用爬蟲技術,能極大地增強協議分析還原的格局與格調,同時,也是提升協議還原系統數據處理能力的有效手段。在協議還原領域,智能化,自動化,不僅僅是口號,而是時時刻刻的需求,爬蟲,是手段之一,是系統提升的必經之路。
本文對爬蟲的原理和基礎進行簡單的介紹,后續將會有文章對爬蟲技術進行實戰演練,各位可提早學習爬蟲中廣泛使用的語言之一,如Python,以便同步實戰。
01
—
基本原理
一般來說,爬蟲是從特定網頁開始,獲取頁面上的URL,然后加入爬取隊列,一直循環直至滿足特定停止條件。隨著進化,新的爬蟲種類出現,它帶有特定任務,也是從特定頁面開始,但會對網頁內容進行深入分析,僅抓取符合特定條件的URL內的數據,并對符合要求的數據進行存儲,直至系統達到特定條件停止。
從上述描述可知,一般的爬蟲會包括如下幾個部分:網絡數據請求及流程控制、內容分析提取、有效數據存儲。
通常,爬蟲的實現,需要了解網站或者APP的架構和邏輯,然后根據頁面的相關信息,進行動態的數據構造和收發。
我們這里討論的爬蟲,是對特定數據進行爬取的爬蟲。
一個最簡單的爬蟲實現,我們可以借助wget庫,使用批處理程序,來對特定網站的特定頁面,如金采網這類政府網站內的通知公告等信息的爬取,不需要復雜的技術。
02
—
技術現狀
爬蟲是用編程語言實現的,同時,會借助各種工具,目前,在網絡中流行廣泛被用于爬蟲編寫的語言是python,它有很多庫可供使用,例如,BeautifulSoup、scrapy等。
在一些特定的系統中,會使用C/C++作為編程語言,來實現特定任務的爬蟲。
還有些人,會使用java等語言來實現爬蟲。
總之,哪個語言對實現所需的爬蟲效率最高,我們就選擇相應的語言來實現爬蟲。
目前,爬蟲基本上都是對網站進行爬取,即主要進行HTTP/HTTPS的操作,當然,還有小眾的爬蟲,對一些APP的內容進行爬取,這些,除HTTP/HTTPS操作外,還有部分TCP/UDP的操作,稍微復雜點。
對各類數據的爬取,需要模擬特定場景,如瀏覽器訪問,APP訪問等,模仿得越逼真,爬取效果會越好。
我們的爬蟲,一般在PC上,滿足特定的條件,即可運行,更多的是運行在VPS或者服務器上。
03
—
學習前提
HTTP請求及響應
HTTP是互聯網的基礎,一個HTTP對由一個請求和一個響應組成,請求和響應都分成HTTP頭部和HTTP體兩個部分,其中請求頭部包含請求的URL及各類頭數據,而響應體部分則包含頁面的主要內容。
分析清楚HTTP請求和響應間的關系,就能夠根據需求對爬蟲進行實現了。
對爬蟲而言,需要關注URL、UA、Cookies及內容的幾個方面。
對協議還原而言,HTTP是最基礎的協議,不可避免地每個人都會接觸到,本號內之前也介紹個HTTP協議相關的內容及實例,可以作為了解HTTP請求和響應的參考,如:
干貨!鏈家二手房數據抓取及內容解析要點
Wireshark分析實戰:某達速遞登錄帳號密碼提取
協議分析實戰:某航某凰知音用戶名及密碼提取
使用Fiddler進行HTTP流量分析
裸奔的支付X聊天,你還敢用嗎?
使用Fiddler抓取手機HTTP流量包
HTML
HTML即網頁的設計語言,一個網站是由一系列固定和臨時的HTML頁面組成的,了解了HTML之后,就能很方便地對特定內容進行提取了。爬蟲中對內容的分析和提取,主要就是對HTML頁面的提取。
對HTML的解析,在Python中可以使用BeautifulSoup庫,其安裝可以參考:
Windows下Python 3.6 安裝BeautifulSoup庫
對HTML的學習,可以參考w3school網站的相關內容。
JavaScript
JavaScript是一種解釋型語言,通常在網站設計中使用,用來進行交互信息的生成和獲取。爬蟲中對內容的分析提取的另一部分,就是對JavaScript的信息計算和構造。
同樣的,對其學習,可以參考w3school網站的相關內容。
04
—
爬取難點
爬蟲作為一種模仿瀏覽器交互的自動化程序,不可避免地會遇到一些問題,典型的問題有:
網站反爬蟲措施
網站會對爬蟲進行一定的限制,例如對包含一些特征的請求進行拒絕,對一些頻繁請求的IP進行限制訪問。這需要使用一定的策略和手段來處理,后續將會在相關文章中講到。
交互的模仿
對各個不同的網站,需要執行的請求方式各不相同,有些可能是根據一定順序執行特定操作,有些需要根據前后操作的結果進行不同處理,這需要在爬蟲的設計中考慮到。這個交互,考驗的是對網站的結構的理解,對有一定協議分析能力的朋友來說,這不會太難。
動態腳本的解析
部分網站,需要根據JavaScript等對內容進行解析,這需要對相關代碼有一定的理解能力,考驗的是編程水平,這只能靠我們自己在實戰中提高了。
在后續,我將通過實戰的方式,和大家一起深入了解爬蟲的世界,有需求,盡管提,隨時聯系。
長按進行關注。
總結
- 上一篇: Fiddler使用技巧:强大的数据文本编
- 下一篇: 顺F速运,你被爱加M坑了