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