用案例讓你一文搞懂python網絡爬蟲

2021-01-07 站長之家

聲明:本文來自於微信公眾號  數據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

相關焦點

  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    12git版本管理 13redis資料庫 14天天生鮮Django項目 15flask框架 17愛家租房項目 18通用爬蟲模塊使用 19Mongodb資料庫 20爬蟲scrapy框架及案例 21數據分析 22機器學習 23深度學習 24數據結構和算法
  • Python爬蟲與文本分析應用案例研討會
    本課程的授課方式是通過python和knime編程的方式,課程最終目的是實現各種分析的自動化流程,課程成果可以在今後工作中復用。   為什麼要學爬蟲技術,學了以後有什麼好處?每次課程我們都會反覆研究,花大量時間準備課程材料,力求用最適合的案例和方式為學員講解。   ·案例教學的方法:我們從2013年開始舉辦公開的技術培訓,也曾多次給企業做內部培訓,從多年的教學實踐中,我們發現,用傳統以知識點講解為主線,案例為輔的方式,效果並不好。學員反映,聽了後面忘前面,學了一堆東西卻不知道怎麼用。
  • 用python寫網絡爬蟲的基本要點
    1、網絡爬蟲(在網絡的網站中通過python的程序模擬人工操作,下載到自己需要的資料)1、定義 :網絡蜘蛛、網絡機器人,抓取網絡數據的程序 2、總結 :用Python程序去模仿人去訪問網站,模仿得越像越好
  • 適合新手學習的Python爬蟲書籍
    《用Python寫網絡爬蟲》作為使用Python來爬取網絡數據的傑出指南,講解了從靜態頁面爬取數據的方法以及使用緩存來管理伺服器負載的方法。第一部分重點介紹網絡數據採集的基本原理:如何用Python從網絡伺服器請求信息,如何對伺服器的響應進行基本處理,以及如何以自動化手段與網站進行交互。第二部分介紹如何用網絡爬蟲測試網站,自動化處理,以及如何通過更多的方式接入網絡。精通Python網絡爬蟲:核心技術、框架與項目實戰
  • 2018年6月份Python網絡爬蟲與文本挖掘
    ,要在短時間內獲取大量信息,網絡爬蟲無疑是一種最適合的方法。通過爬蟲獲取的海量信息,我們可以對其進行進一步的分析:市場預測、文本分析、機器學習方法等。 Python作為一門腳本語言,它靈活、易用、易學、適用場景多,實現程序快捷便利,早已經成為程式設計師們的一門編程利器。Python這門程式語言包羅萬象,可以說掌握了python,除了一些特殊環境和高度的性能要求,你可以用它做任何事。
  • 2020重磅升級「Python數據科學入門與網絡爬蟲案例實戰研討會」
    2020重磅升級的Python數據科學入門與網絡爬蟲案例實戰研討會開始報名啦!  原來數據的獲取不是我們想的那樣,教您玩轉Python爬蟲入門+進階+實戰 。  § 學習基礎Python  § 重視遞歸思維求解能力與訓練  § 你可能不知道而你應該知道的Python知識  § 編程的藝術  § Python網絡爬蟲介紹  § 網絡爬蟲的流程  § 網頁結構和網絡協議  § 利用requests和BeautifulSoup模塊抓取靜態網頁
  • 簡單講解價值1K的Python爬蟲外包案例
    前言 本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯繫我們以作處理。 對於這個外包給予的網站信息,那麼我們就爬取選擇第一個吧獵聘網>,也就簡單實現,並不會進行打包處理,以及輸入關鍵字爬取,因為打包以及輸入關鍵詞爬取數據,在公眾號往期的文章都是有相關的案例
  • Python開發簡單爬蟲【學習資料總結】
    一、簡單爬蟲架構 開發爬蟲步驟 python語言基礎:(帶你熟悉python語言的特性,學會使用python開發環境,使用python開發一些簡單的案例)
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    在當今社會,網際網路上充斥著許多有用的數據。我們只需要耐心觀察並添加一些技術手段即可獲得大量有價值的數據。而這裡的「技術手段」就是指網絡爬蟲。 今天,小編將與您分享一個爬蟲的基本知識和入門教程:什麼是爬蟲?網絡爬蟲,也叫作網絡數據採集,是指通過編程從Web伺服器請求數據(HTML表單),然後解析HTML以提取所需的數據。
  • 從零開始的python爬蟲速成指南
    小夥伴感興趣可以自取~此外,我這還有兩本比較經典的python爬蟲電子書,在微信公眾號【輪子工廠】後臺回復 」爬蟲」 可以領取。大家翻到文末,點擊左下角「閱讀原文」就可以找到知乎上的這篇內容了。本文一共整理了126篇爬蟲相關的文章,大家可以通過這個目錄系統的學習爬蟲,也可以收藏起來,當做字典查詢。建議先點擊「閱讀原文」,打開知乎上的這篇文章,然後再收藏。
  • 精通 Python 網絡爬蟲:網絡爬蟲學習路線
    隨著大數據時代的到來,人們對數據資源的需求越來越多,而爬蟲是一種很好的自動採集數據的手段。那麼,如何才能精通Python網絡爬蟲呢?學習Python網絡爬蟲的路線應該如何進行呢?在此為大家具體進行介紹。
  • 聊聊學python轉行、具體學習方法、自學python用於辦公、寫爬蟲等...
    Python這幾年都挺火的,比如說應用於數據分析、機器學習、自動化辦公、寫爬蟲採集數據等等……因為我之前發過幾篇和python有關的推文,所以不止一個朋友加私信問我說,你是怎麼學的,能不能談一談學習的經驗和技巧。
  • Python爬蟲知識點梳理
    回復「1024」有驚喜學任何一門技術,都應該帶著目標去學習,目標就像一座燈塔,指引你前進,很多人學著學著就學放棄了,很大部分原因是沒有明確目標,所以,在你準備學爬蟲前,先問問自己為什麼要學習爬蟲。有些人是為了一份工作,有些人是為了好玩,也有些人是為了實現某個黑科技功能。不過可以肯定的是,學會了爬蟲能給你的工作提供很多便利。
  • Python新手學習網絡爬蟲要做什麼?
    Python網絡爬蟲學習,不需要你深入學習html,只要知道掌握它常用的簡單標籤跟知識點就行。三、urllib、urllib2兩個庫很重要urllib和urllib2個庫是我們在抓取頁面要用的。在python中,urllib和urllib2不可相互替代,雖然urllib2是urllib的增強,但是urllib中有urllib2中所沒有的函數。
  • Python 爬蟲:8 個常用的爬蟲技巧總結!
    用python也差不多一年多了,python應用最多的場景還是web快速開發、爬蟲、自動化運維:寫過簡單網站、寫過自動發帖腳本、寫過收發郵件腳本
  • 從零開始學會Python 爬蟲,該怎麼做?
    Python離我們最近的案例可能是春運的時候程式設計師利用Python各種腳本的搶票源碼搶到回家的車票了。其實,Python能做的不僅僅是搶票哦,今天小編就給大家總結了一些Python爬取各種東西的案例,讓你看看Python到底有多強大。
  • 「Python爬蟲與文本實例技術與應用」培訓班通知
    通過爬蟲獲取的海量信息,我們可以對其進行進一步的分析:市場預測、文本分析、機器學習方法等。     Python作為一門腳本語言,它靈活、易用、易學、適用場景多,實現程序快捷便利,早已經成為程式設計師們的一門編程利器。Python這門程式語言包羅萬象,可以說掌握了python,除了一些特殊環境和高度的性能要求,你可以用它做任何事。
  • python 爬蟲一招解決SSl 報錯SSLError
    摘要用python寫爬蟲的時候沒我們經常遇到https認證的網站,採用常用模塊requests模塊,我們一般在請求中將verify設置成假,免證書驗證,但是這些都是理想狀態,https請求很容易報錯,一旦報錯就難以解決。
  • 一小時入門 Python 3 網絡爬蟲
    作者:Jack-Cui,熱愛技術分享,活躍於 CSDN 和知乎,開設的《Python3網絡爬蟲入門》、《Python3機器學習》等專欄受到好評。 聲明:本文講解的實戰內容,均僅用於學習交流,請勿用於任何商業用途!
  • Python爬蟲利器一之Requests庫的用法
    註:Python 版本依然基於 2.7前言之前我們用了 urllib 庫,這個作為入門的工具還是不錯的,對了解一些爬蟲的基本理念,掌握爬蟲爬取的流程有所幫助。入門之後,我們就需要學習一些更加高級的內容和工具來方便我們的爬取。那麼這一節來簡單介紹一下 requests 庫的基本用法。