python网络爬虫(web spider)系统化整理总结(一):入门
接觸爬蟲很久了,一直沒有個系統的理解和整理,近來假日無事,總結一下。
-------------------------------------------以下是目錄---------------------------------------------------------
一、爬蟲概述及分類
二、爬蟲的應用場景
三、爬蟲的一般執行過程
四、爬蟲技術常用的知識
五、反爬蟲
-------------------------------------------以下是正文---------------------------------------------------------
一、爬蟲概述及分類
??????? 網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。
?????? 目前爬蟲種類和一些基本信息如下:
?????
二、爬蟲的應用場景
三、爬蟲的一般執行過程
執行過程:
?????????
各部分運行關系流程圖:
四、爬蟲技術常用的知識
?????? 1、數據抓取:
???????????????? 1.1,涉及的過程主要是模擬瀏覽器向服務器發送構造好的http請求,一般是get或者post類型;
???????????????? 1.2,爬蟲的實現,除了scrapy框架之外,python有很多可供調用的庫:
???????????????????????? urllib、requests、mechanize:用于獲取URL對應的原始響應內容;
???????????????????????? selenium、splinter通過加載瀏覽器驅動,獲取渲染之后的響應內容,模擬程度高,但是效率低;
???????????????? 1.3,http協議、身份認證機制(Cookie);
???????????????? 1.4,網絡流量分析:Chrome、Firfox+Firebug、Fiddler、Burp Suite 。
?????? 2、數據解析:
????????????????? 2.1,HTM結構、json數據格式、XML數據格式;
????????????????? 2.2,庫:lxml、beautiful-soup4、re、pyquery;
????????????????? 2.3,從頁面提取所需數據的方法:
?????????????????????????? xpath路徑表達式、CSS選擇器(主要用于提取結構化數據)
?????????????????????????? 正則表達式(主要用于提取非結構化數據)。
?????? 3、數據庫:
????????????????? 3.1,結構化數據庫:MySQL、SQLite等;
????????????????? 3.2,非結構化數據庫:Redis等。
?????? 4、其他:
????????????????? 4.1,多線程、任務調度、消息隊列、分布式爬蟲、圖像識別、反爬蟲技術等等。。。。。。
五、反爬蟲
?????????? 1. 基本的反爬蟲手段,主要是檢測請求頭中的字段,比如:User-Agent、 referer等。 針對這種情
況,只要在請求中帶上對應的字段即可。 所構造http請求的各個字段最好跟在瀏覽器中發送的完全一
樣,但也不是必須。
?????????? 2. 基于用戶行為的反爬蟲手段,主要是在后臺對訪問的IP(或User-Agent)進行統計,當超過某一
設定的閾值,給予封鎖。 針對這種情況,可通過使用代理服務器解決,每隔幾次請求,切換一下所用
代理的IP地址(或通過使用User-Agent列表解決,每次從列表里隨機選擇一個使用)。 這樣的反爬
蟲方法可能會誤傷用戶。
?????????? 3. 希望抓取的數據是如果通過ajax請求得到的,假如通過網絡分析能夠找到該ajax請求,也能分析出
請求所需的具體參數,則直接模擬相應的http請求,即可從響應中得到對應的數據。 這種情況,跟普
通的請求沒有什么區別。
?????????? 4. 基于Java的反爬蟲手段,主要是在響應數據頁面之前,先返回一段帶有Java代碼的頁面,用于驗
證訪問者有無Java的執行環境,以確定使用的是不是瀏覽器。
?
?
?
總結
以上是生活随笔為你收集整理的python网络爬虫(web spider)系统化整理总结(一):入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【网络流24题】火星探险问题 题解
- 下一篇: 你想通过创业赚取人生中的第一桶金