發送請求à得到頁面à解析頁面à下載內容à儲存內容python
爬行對象從一些種子URL擴充到整個Web,主要爲門戶站點搜索引擎和大型Web服務提供商採集數據。mysql
包括頁面爬行模塊、頁面分析模塊、連接過濾模塊、頁面數據庫、URL隊列、初始URL集合。web
深度優先策略、廣度優先策略redis
包括頁面爬行模塊、頁面分析模塊、連接過濾模塊、頁面數據庫、URL隊列、初始URL集合,增長了連接評價模塊以及內容評價模塊。算法
(1)基於內容評價的爬行策略:sql
Fish Search算法:運用文本類似度的計算方法,將用戶輸入的查詢詞做爲主題,包含查詢詞的頁面被視爲與主題相關,侷限性在於沒法評價頁面與主題相關度的高低。mongodb
Sharksearch算法:利用空間向量模型計算頁面與主題的相關度大小。chrome
(2)基於連接結構評價的爬蟲策略:數據庫
PageRank算法:PageRank值越大的頁面,越重要flask
HITS算法:經過計算每一個頁面的Authority權重(權威型)和Hub(中心型)權重,來評價連接的重要性
(3)基於加強學習的爬行策略:
將加強學習引入爬蟲,利用貝葉斯分類器,根據整個網頁文本和連接文本對超連接進行分類,爲每一個連接計算出重要性。
(4)基於語境圖的爬行策略:
經過創建語境圖學習網頁之間的相關度,訓練一個機器學習系統,經過該系統可計算當前頁面到相關Web頁面的距離,距離越近的頁面中的連接優先訪問。
該爬蟲對主題的定義既不是採用關鍵詞也不是加權矢量,而是一組具備相同主題的網頁。
包括兩個重要模塊:分類器,淨化器
分類器:用來計算所爬行頁面與主題的相關度,肯定是否與主題相關
淨化器:用來識別經過較少連接鏈接到大量相關頁面的中心頁面
爬行模塊,排序模塊,更新模塊,本地頁面集,待爬行URL集以及本地頁面URL集。
(1) 保持本地頁面集中存儲的頁面爲最新頁面
a) 統一更新法:爬蟲以相同的頻率訪問網頁,不考慮網頁的改變頻率;
b) 個體更新法:爬蟲根據個體網頁的改變頻率來從新訪問各頁面;
c) 基於分類的更新法:爬蟲根據網頁改變頻率將其分爲更新較快的網頁子集和更新較慢的網頁子集兩類,而後以不一樣的頻率訪問這兩類網頁。
(2) 提升本地頁面集中頁面的質量:須要對網頁的重要性排序,經常使用的策略有:廣度優先策略,PageRank優先策略等。
Deep web是那些大部份內容不能經過靜態連接獲取的,隱藏在搜索表單後,只有用戶提交一些關鍵詞才能得到的Web頁面。好比註冊後纔可見的頁面。
六個基本功能模塊:爬行控制器,解析器,表單分析器,表單處理器,響應分析器,LVS控制器。
兩個爬蟲內部數據結構:URL列表和LVS表,LVS表示標籤/數值集合,用來表示填充表單的數據源。
(1)基於領域知識的表單填寫:維持一個本體庫,經過語義分析來選取合適的關鍵詞填寫表單
(2)基於網頁結構分析的表單填寫:將網頁表單表示成DOM樹,從中提取表單各字段值
1. 通用網絡爬蟲
2. 聚焦網絡爬蟲
Ache框架,Fish Search算法,Sharksearch算法,PageRank算法,HITS算法,將加強學習引入爬蟲,基於語境圖。
3. 增量式網絡爬蟲
它根據網頁變化時間局部性規律,在短時期內直接爬行屢次變化的網頁,爲儘快獲取新網頁,它利用索引型網頁跟蹤新出現網頁。
4. Deep web爬蟲
1. 網頁搜索策略
2. 網頁分析算法
適用於:python+通用網絡爬蟲
表1 反爬策略與反爬處理策略
反爬策略 |
反爬處理策略 |
IP限制 |
IP代理池技術 |
UA限制 |
用戶代理池技術 |
Cookie限制 |
Cookie保存與處理 |
資源隨機化存儲 |
自動觸發技術 |
動態加載技術 |
抓包分析技術(Fiddler)+自動觸發技術 |
Opencv(圖像顛倒) |
??? |
打碼平臺 動態網頁 |
??? Selenium模擬瀏覽器加載 |
……. |
……. |
數據去重技術:
數據存儲:本地文檔,mysql,mongodb(方便存儲非結構化數據),sqllite,PyMongo
數據處理:
輔助工具:
組合組件:
scrapy:爬取網頁內容
redis:存儲要爬取的網頁隊列,即任務隊列
mongodb:存儲爬取的內容結果
1. 相關的知識太多,不知道從哪處開始
對新手來講,用什麼可有可無,選擇一個組合組件,根據一個具體項目的具體需求,開始學着作着
2. 相關的知識太多,感受學習完須要太多的精力
不必所有學會,會運用一個組合組件後,再根據接觸到的項目的具體須要,須要什麼學習什麼。