聲明:本文來自於微信公眾號 數據EDTA(ID:livandata),作者: livan,授權站長之家轉載發布。
很久以前寫了一篇爬蟲的文章,把它放在CSDN上(livan1234)沒想到點擊量竟然暴漲,足以看到大家在數據獲取方面的需求,爬蟲技術現在已經非常普遍,其用途也非常廣泛,很多牛人在各個領域做過相關的嘗試,比如:
1)爬取汽車之家數據,利用論壇發言的抓取以及NLP,對各種車型的車主做畫像。
2)抓取各大電商的評論及銷量數據,對各種商品(顆粒度可到款式)沿時間序列的銷量以及用戶的消費場景進行分析。
3)還可以根據用戶評價做情感分析,實時監控產品在消費者心目中的形象,對新發布的產品及時監控,以便調整策略。
4)抓取房產買賣及租售信息,對熱熱鬧鬧的房價問題進行分析。
5)抓取大眾點評、美團網等餐飲及消費類網站:各種店面的開業情況以及用戶消費和評價,了解周邊變化的口味,所謂是「舌尖上的爬蟲」。以及各種變化的口味,比如:啤酒在衰退,重慶小面在崛起。
6) 58 同城等分類信息網站:抓取招商加盟的數據,對定價進行分析,幫助網友解惑。
7)拉勾網、中華英才網等招聘網站:抓取各類職位信息,分析最熱門的職位以及薪水。
8)掛號網等醫療信息網站:抓取醫生信息並於宏觀情況進行交叉對比。
9)應用寶等App市場:對各個App的發展情況進行跟蹤及預測。(順便吹一下牛,我們這個榜單很早就發現小紅書App的快速增長趨勢以及在年輕人中的極佳口碑)
10)攜程、去哪兒及 12306 等交通出行類網站:對航班及高鐵等信息進行抓取,能從一個側面反映經濟是否正在走入下行通道。
11)雪球等財經類網站:抓取雪球KOL或者高回報用戶的行為,找出推薦股票
12) 58 同城二手車、易車等汽車類網站:什麼品牌或者型號的二手車殘值高?更保值?反之,什麼類型的貶值較快?- 二手車,找出最佳的買車時間以及最保值的汽車。
13)神州租車、一嗨租車等租車類網站:抓取它們列舉出來的租車信息,長期跟蹤租車價格及數量等信息。
14)各類信託網站:通過抓取信託的數據,了解信託項目的類型及規模。其實還有很多數據,不一一列舉了。
上次的文章是在討論移動端的數據獲取:點此查看
本文對爬蟲做一個全面的總結,不一定包治百病,但是能治好大部分疾病,希望能夠對大家有所幫助:
1、 urllib 庫:這是一個在爬蟲領域繞不開的庫,他支持 http 的爬取,幾乎可以取到方方面面的內容。
以下面的豆瓣案例做一個簡要的解釋:
豆瓣小案例:
常用函數:
2、超時設置:
由於網絡速度或者對方伺服器的問題,我們爬取一個網頁的時候,都需要設置時間,我們訪問一個網頁,如果該網頁長時間未響應,那麼我們的系統就會判斷該網頁超時了,即無法打開該網頁。
有時候,我們需要根據自己的需求,來設置超時的時間值,比如:有些網站會反應快,我們希望 2 秒種沒有反應則判斷為超時,那麼此時,timeout= 2 即為設置方式,即在 urlopen 中加入 timeout 參數。再比如,有些網站伺服器反應慢,那麼我們希望 100 秒沒有反應,才判斷超時,此時的timeout即設置為100,接下來為大家講解爬蟲超時的設置。
3、自動模擬 Http 請求:
客戶端如果要與伺服器端進行通信,需要通過http進行請求,http請求有很多種,我們在此會講post與get兩種請求方式,比如登錄、搜索某些信息的時候會用到。
1)處理 get 請求:
2)理 post 請求:
所謂post請求即為 HTML 的 form 中存在 method=「post」的標籤,如下文:
body
form action=」」,method=」post」
姓名:input name=」name」 type=」text」/br
密碼:input name=」pass」 type=」text」/br
input name=」」 type=」submit」 value=」點擊提交」
/body
在新浪 login.sina.com.cn 中即可看到,form 為 post 方式。我們只需要 form 表單中的 name 屬性即可。
如下圖:
4、爬蟲的異常處理:
爬蟲在運行的過程中,很多時候都會遇到這樣或那樣的異常。如果沒有異常處理,爬蟲遇到異常時就會直接崩潰停止運行,下次再次運行時,又會重頭開始,所以,要開發一個具有頑強生命力的爬蟲,必須要進行異常處理。
異常處理主要是為了增強代碼的穩定性。
兩者都是異常處理的類,HTTPError是URLError的子類,HTTPError有異常狀態碼與異常原因,URLError沒有異常狀態碼,所以,在處理的時候,不能使用URLError直接替代HTTPError。如果要替代,必須要判斷是否有狀態碼屬性。
接下來我們通過實戰講解:
具體的實戰為:
5、爬蟲的偽裝技術:
瀏覽器偽裝技術原理:
我們可以試試爬取csdn博客,我們發現會返回403,因為對方伺服器會對爬蟲進行屏蔽。此時我們需要偽裝成瀏覽器才能爬取。
瀏覽器偽裝我們一般通過報頭進行,接下來我們通過實戰分析一下。
6、新聞網站爬取:
需求:將新浪新聞首頁(http://news.sina.com.cn/)所有新聞都爬到本地。
思路:先爬首頁,通過正則獲取所有新聞連結,然後依次爬各新聞,並存儲到本地。
7、爬蟲防屏蔽手段之代理伺服器:
如何做代理:
8、圖片爬蟲實戰: 在瀏覽器爬取時,有時不同的瀏覽器會有不同的查詢結果,解析出不同的源碼。
首先在「審查元素」中確定元素的重點欄位是哪些,然後再在「源碼」中查找對應的圖片位置,確定圖片 url 的規則。
#!/usr/bin/env python # _*_ UTF-8 _*_
在源碼解決不了的情況下,需要進行抓包。作業:千圖網的爬取(可以通過調試找到報錯原因):
9、抓包分析實戰(一)
獲取淘寶的評論信息、騰訊的娛樂新聞信息等需要抓包分析。如何抓取 https 的數據包以及騰訊視頻的評論。
TextView:顯示返回的信息;
通過 fiddler 找到含有評論的網址,複製出對應的網址,觀察網址的規則。
設置完 fiddler 之後,點擊要爬取的頁面,回到 fiddler 中,確定有 js 內容的連結:
對應的網址為:(點此)
然後確定其中的 itemId 等欄位的內容,其中的部分內容未必有用處,可以直接刪除,比如 上面 url的 ua 欄位。
如果要抓取 https 的數據:
Fiddler 默認只能抓取 HTTP 協議的網頁,不能抓取 HTTPS 協議的網頁,而我們很多時候,都需要抓 HTTPS 協議的網頁,比如抓淘寶數據等。今天,韋瑋老師會為大家講解如何使用 Fiddler 抓取 HTTPS 協議的網頁。
打開 Fiddler,點擊「Tools--FiddlerOptions--HTTPS」,把下方的全部勾上,如下圖所示:
然後,點擊 Action,選擇將CA 證書導入到桌面,即第二項,導出後,點擊上圖的 ok 保存配置。
然後在桌面上就有了導出的證書,如下所示:
隨後,我們可以在瀏覽器中導入該證書。我們打開火狐瀏覽器,打開「選項--高級--證書- -導入」,選擇桌面上的證書,導入即可。隨後,Fiddler 就可以抓 HTTPS 協議的網頁 了。如下圖所示。
抓取騰訊視頻的評論:
下圖為帶評論的 js 文件(從 fiddler 中獲取):
其中有多個欄位,commentid 等,在點擊「加載更多」時,commentID 會發生變化,在第一個url 的源碼中會找到下一個評論 url 的地址,找到 last 欄位,即為下一個 url 的commentid, 以此來構造下一個 url。
10、微信爬蟲實戰:
如何解決微信的限制?
11、多線程爬取實戰 糗事百科的代碼:微信爬蟲的爬取依然是使用瀏覽器,即在搜狗瀏覽器上使用微信網頁版,然後編輯這個頁面的 url,以獲取內容。
將此程序改為多進程為:
技術總是在不停的進步的,現在的這些爬蟲技術一定不能適應所有的環境,如有各位意猶未盡,請關注我的公眾號:livandata