爬蟲調研

1、 爬蟲流程

發送請求à得到頁面à解析頁面à下載內容à儲存內容python

2、 網絡爬蟲類型

1.   通用網絡爬蟲

  • 含義

爬行對象從一些種子URL擴充到整個Web,主要爲門戶站點搜索引擎和大型Web服務提供商採集數據。mysql

  • 結構

包括頁面爬行模塊、頁面分析模塊、連接過濾模塊、頁面數據庫、URL隊列、初始URL集合。web

  • 爬行策略

深度優先策略、廣度優先策略redis

2.   聚焦網絡爬蟲

  • 含義:選擇性地爬取那些與預先定義好的主題相關的頁面。
  • 結構

包括頁面爬行模塊、頁面分析模塊、連接過濾模塊、頁面數據庫、URL隊列、初始URL集合,增長了連接評價模塊以及內容評價模塊。算法

  • 爬行策略:評價頁面內容和連接的重要性

(1)基於內容評價的爬行策略:sql

Fish Search算法:運用文本類似度的計算方法,將用戶輸入的查詢詞做爲主題,包含查詢詞的頁面被視爲與主題相關,侷限性在於沒法評價頁面與主題相關度的高低。mongodb

Sharksearch算法:利用空間向量模型計算頁面與主題的相關度大小。chrome

(2)基於連接結構評價的爬蟲策略:數據庫

PageRank算法:PageRank值越大的頁面,越重要flask

HITS算法:經過計算每一個頁面的Authority權重(權威型)和Hub(中心型)權重,來評價連接的重要性

(3)基於加強學習的爬行策略:

將加強學習引入爬蟲,利用貝葉斯分類器,根據整個網頁文本和連接文本對超連接進行分類,爲每一個連接計算出重要性。

         (4)基於語境圖的爬行策略:

經過創建語境圖學習網頁之間的相關度,訓練一個機器學習系統,經過該系統可計算當前頁面到相關Web頁面的距離,距離越近的頁面中的連接優先訪問。

 

該爬蟲對主題的定義既不是採用關鍵詞也不是加權矢量,而是一組具備相同主題的網頁。

包括兩個重要模塊:分類器,淨化器

         分類器:用來計算所爬行頁面與主題的相關度,肯定是否與主題相關

                  淨化器:用來識別經過較少連接鏈接到大量相關頁面的中心頁面

3.   增量式網絡爬蟲

  • 含義:對已下載網頁採起增量式更新,即只爬行新產生的或者已經發生變化網頁的爬蟲。
  • 結構

爬行模塊,排序模塊,更新模塊,本地頁面集,待爬行URL集以及本地頁面URL集。

  • 爬行策略:保持本地頁面集中存儲的頁面爲最新頁面和提升本地頁面集中頁面的質量

(1)     保持本地頁面集中存儲的頁面爲最新頁面

a)       統一更新法:爬蟲以相同的頻率訪問網頁,不考慮網頁的改變頻率;

b)       個體更新法:爬蟲根據個體網頁的改變頻率來從新訪問各頁面;

c)        基於分類的更新法:爬蟲根據網頁改變頻率將其分爲更新較快的網頁子集和更新較慢的網頁子集兩類,而後以不一樣的頻率訪問這兩類網頁。

(2)     提升本地頁面集中頁面的質量:須要對網頁的重要性排序,經常使用的策略有:廣度優先策略,PageRank優先策略等。

4.   Deep web爬蟲

  • 含義

Deep web是那些大部份內容不能經過靜態連接獲取的,隱藏在搜索表單後,只有用戶提交一些關鍵詞才能得到的Web頁面。好比註冊後纔可見的頁面。

  • 結構

六個基本功能模塊:爬行控制器,解析器,表單分析器,表單處理器,響應分析器,LVS控制器。

         兩個爬蟲內部數據結構:URL列表和LVS表,LVS表示標籤/數值集合,用來表示填充表單的數據源。

  • 爬行策略:表單填寫

(1)基於領域知識的表單填寫:維持一個本體庫,經過語義分析來選取合適的關鍵詞填寫表單

(2)基於網頁結構分析的表單填寫:將網頁表單表示成DOM樹,從中提取表單各字段值

3、已實現框架及算法

1. 通用網絡爬蟲

  • 爬蟲框架:Scrapy,pySpider等

2. 聚焦網絡爬蟲

Ache框架,Fish Search算法,Sharksearch算法,PageRank算法,HITS算法,將加強學習引入爬蟲,基於語境圖。

3. 增量式網絡爬蟲

  • IBM的WebFountain:採用一種自適應的方法根據先前爬行週期裏爬行結果和網頁實際變化速度對頁面更新頻率進行調整。
  • 北京大學的天網增量爬行系統:旨在爬行國內Web,將網頁分爲變化網頁和新網頁分類,分別採用不一樣爬行策略。

它根據網頁變化時間局部性規律,在短時期內直接爬行屢次變化的網頁,爲儘快獲取新網頁,它利用索引型網頁跟蹤新出現網頁。

4. Deep web爬蟲

  • Desouky 等人提出一種 LEHW 方法
  • Raghavan 等人提出的 HIWE 系統

4、網頁搜索策略和網頁分析算法

1. 網頁搜索策略

  • 廣度優先搜索
  • 最佳優先搜索
  • 深度優先搜索

2. 網頁分析算法

  • 基於網絡拓撲
  • 基於網頁內容
  • 基於用戶訪問

5、 爬蟲學習路線-

適用於:python+通用網絡爬蟲

 

表1  反爬策略與反爬處理策略

反爬策略

反爬處理策略

IP限制

IP代理池技術

UA限制

用戶代理池技術

Cookie限制

Cookie保存與處理

資源隨機化存儲

自動觸發技術

動態加載技術

抓包分析技術(Fiddler)+自動觸發技術

Opencv(圖像顛倒)

???

打碼平臺

動態網頁

???

Selenium模擬瀏覽器加載

…….

…….

 

數據去重技術:

  • 數據量少:運用數據庫的數據約束
  • 數據量很大:布隆過濾器 Bloom Filter

 

數據存儲:本地文檔,mysql,mongodb(方便存儲非結構化數據),sqllite,PyMongo

數據處理:

  • Numpy,pandas
  • TB級別的數據:???

 

輔助工具:

  • bs4(BeautifulSoup):把網頁變成結構化數據,方便爬取,
  • PhantomJS:不顯示網頁的Selenium,
  • Selenium/ghost:動態頁面,
  • Scrapyjs:scrapy官方推薦處理動態頁面的方式
  • F12:看源代碼瀏覽器快捷鍵,
  • 火狐:可方便查看網站收包發包的信息,
  • XPATH CHECKER:火狐插件(xpath測試工具)
  • XPathOnClick:chrome插件,支持點擊頁面元素,獲取XPATH路徑,用於編輯配置模版
  • Django、flask:Web開發框架,系統監控反饋
  • Dagobah:可視化調度架構
  • Docker:爬蟲的部署容器
  • Hbase:可提升存儲數據的速度
  • 八爪魚:爬蟲軟件http://www.bazhuayu.com/
  • Opencv:批量格式化圖片

 

組合組件:

  • request+urllib+Beautifulsoup/scrapy:實現簡單的單機爬蟲
  • scrapy+redis+mongodb:分佈式爬蟲系統

scrapy:爬取網頁內容

redis:存儲要爬取的網頁隊列,即任務隊列

mongodb:存儲爬取的內容結果

6、困難與建議

1. 相關的知識太多,不知道從哪處開始

對新手來講,用什麼可有可無,選擇一個組合組件,根據一個具體項目的具體需求,開始學着作着

2. 相關的知識太多,感受學習完須要太多的精力

不必所有學會,會運用一個組合組件後,再根據接觸到的項目的具體須要,須要什麼學習什麼。

相關文章
相關標籤/搜索