Python從概念上先了解爬蟲

什麼是爬蟲

爬蟲:就是抓取網頁數據的程序。搜索引擎的底層其實就是爬蟲。
百度百科:網絡爬蟲html

關於Python爬蟲,咱們須要學習的有:python

  1. Python基礎語法學習(基礎知識)
  2. HTML頁面的內容抓取(數據抓取)
  3. HTML頁面的數據提取(數據清洗)
  4. Scrapy框架以及scrapy-redis分佈式策略(第三方框架)
  5. 爬蟲(Spider)、反爬蟲(Anti-Spider)、反反爬蟲(Anti-Anti-Spider)之間的鬥爭....

爲何須要爬蟲

咱們先來考慮一個問題,移動互聯網時代已通過去了,你看如今IOS和安卓的行情,如今是大數據時代,那一直在說大數據大數據,那麼所謂的"大數據時代",數據獲取的方式有哪幾種?
百度搜、淘寶買這個是咱們一會兒能夠想到的方式,那麼咱們統計下都有哪些方式程序員

  1. 企業生產的用戶數據:大型互聯網公司有海量用戶,因此他們積累數據有自然的優點。
    有數據意識的中小型企業,也開始積累的數據。(百度指數 阿里指數 新浪微博指數
  2. 數據管理諮詢公司:一般這樣的公司有很龐大的數據採集團隊,通常會經過市場調研、問卷調查、固定的樣本檢測,和各行各業的公司進行合做、專家對話(數據積累不少年了,最後得出科研結果)來採集數據。(麥肯錫 艾瑞諮詢
  3. 政府/機構提供的公開數據:政府經過各地政府統計上報的數據進行合併;機構都是權威的第三方網站。(中華人民共和國國家統計局數據 世界銀行公開數據 聯合國數據
  4. 第三方數據平臺購買數據:經過各個數據交易平臺來購買各行各業須要的數據,根據獲取難度不一樣,價格也會不一樣。(數據堂 國雲數據市場)中國作大數據比較多的一個省就是貴陽,地理優點,貴陽大數據交易所
  5. 爬蟲爬取數據:若是市場上沒有咱們須要的數據,或者價格過高不肯意買,那麼就能夠招/作一個爬蟲工程師,從互聯網上定向採集數據。(拉勾網上招聘爬蟲工程師

爬蟲怎麼抓取網頁數據

咱們平時經過瀏覽器打開的任意一個網頁,其實都有如下三大通用特徵ajax

網頁三大特徵:redis

  1. 網頁都有本身惟一的URL(統一資源定位符)來進行定位
  2. 網頁都使用HTML (超文本標記語言)來描述頁面信息。
  3. 網頁都使用HTTP/HTTPS(超文本傳輸協議)協議來傳輸HTML數據。

爬蟲的設計思路:數據庫

  1. 首先肯定須要爬取的網頁URL地址。
  2. 經過HTTP/HTTP協議來獲取對應的HTML頁面。
  3. 提取HTML頁面裏有用的數據:若是是須要的數據,就保存起來。 若是是頁面裏的其餘URL,那就繼續執行第二步

只有Python能搞爬蟲?

首先要糾正下,不論是所謂的大數據分析仍是爬蟲其餘編程語言一樣能夠實現,如 PHP、Java、C/C++、Python等等..編程

那麼爲何咱們要選擇python來進行實現,咱們首先對比下這幾個語言json

  1. PHP 雖然是世界上最好的語言,可是他天生不是幹這個的,並且對多線程、異步支持不夠好,併發處理能力很弱,爬蟲是工具性程序,對速度和效率要求比較高。
  2. Java 的網絡爬蟲生態圈也很完善,是Python爬蟲最大的對手。可是Java語言自己很笨重,代碼量很大。重構成本比較高,任何修改都會致使代碼的大量變更。爬蟲常常須要修改部分採集代碼。
  3. C/C++ 運行效率和性能幾乎最強,可是學習成本很高,代碼成型比較慢。能用C/C++作爬蟲,只能說是能力的表現,可是不是正確的選擇,大材小用。
  4. Python 語法優美、代碼簡潔、開發效率高、支持的模塊多,相關的HTTP請求模塊和HTML解析模塊很是豐富。還有強大的爬蟲Scrapy,以及成熟高效的 scrapy-redis分佈式策略。並且,調用其餘藉口也很是方便(膠水語言)

爬蟲的分類

根據使用場景:分爲 通用爬蟲 聚焦爬蟲瀏覽器

1、通用爬蟲:搜索引擎用的爬蟲系統。服務器

目標:就是儘量把互聯網上全部的網頁下載下來,放到本地服務器裏造成備份,再對這些網頁作相關處理(提取關鍵字、去掉廣告),最後提供一個用戶檢索接口

抓取流程:
1.首選選取一部分已有的URL,把這些URL放到待爬取隊列。
2.從隊列裏取出這些URL,而後解析DNS獲得主機IP,而後去這個IP對應的服務器裏下載HTML頁面,保存到搜索引擎的本地服務器。以後把這個爬過的URL放入已爬取隊列。
3.分析這些網頁內容,找出網頁裏其餘的URL鏈接,繼續執行第二步,直到爬取條件結束。
圖片描述

搜索引擎如何獲取一個新網站的URL
1.主動向搜索引擎提交網址:(如百度http://zhanzhang.baidu.com/li...
2.在其餘網站裏設置網站的外鏈。
3.搜索引擎會和DNS服務商進行合做,能夠快速收錄新的網站。(DNS:就是把域名解析成IP的一種技術。)
好比你在cmd pin www.baidu.com就會獲得百度的IP,直接在瀏覽器裏面輸入IP通用能夠訪問到百度
圖片描述

通用爬蟲並非萬物皆可爬,它也須要遵照規則:
Robots協議:協議會指明通用爬蟲能夠爬取網頁的權限。
Robots.txt 只是一個建議。並非全部爬蟲都遵照,通常只有大型的搜索引擎爬蟲纔會遵照。我們我的寫的爬蟲,就無論了。就像公交車上老弱病殘孕專座同樣。

這裏簡單介紹下Robots協議(也叫爬蟲協議、機器人協議等),全稱是「網絡爬蟲排除標準」(Robots Exclusion Protocol),網站經過Robots協議告訴搜索引擎哪些頁面能夠抓取,哪些頁面不能抓取,例如:
淘寶網:https://www.taobao.com/robots...
騰訊網: http://www.qq.com/robots.txt

通用爬蟲工做流程:爬取網頁 - 存儲數據 - 內容處理 - 提供檢索/排名服務

搜索引擎排名:
1.PageRank值:根據網站的流量(點擊量/瀏覽量/人氣)統計,流量越高,網站也越值錢,排名越靠前。
2.競價排名:誰給錢多,誰排名就高。

通用爬蟲的缺點
1.通用搜索引擎所返回的結果都是網頁,而大多狀況下,網頁裏90%的內容對用戶來講都是無用的。
2.不一樣領域、不一樣背景的用戶每每具備不一樣的檢索目的和需求,搜索引擎沒法提供針對具體某個用戶的搜索結果。
3.萬維網數據形式的豐富和網絡技術的不斷髮展,圖片、數據庫、音頻、視頻多媒體等不一樣數據大量出現,通用搜索引擎對這些文件無能爲力,不能很好地發現和獲取。
4.通用搜索引擎大多提供基於關鍵字的檢索,難以支持根據語義信息提出的查詢,沒法準確理解用戶的具體需求。
爲了解決這個問題,聚焦爬蟲出現了

2、聚焦爬蟲:爬蟲程序員寫的針對某種內容的爬蟲。
面向主題爬蟲,面向需求爬蟲:會針對某種特定的內容去爬取信息,並且會保證信息和需求儘量相關。而咱們後面要學習的,就是聚焦爬蟲。

你目前須要掌握爬蟲用到的技術

  1. Python的基本語法知識
  2. 如何抓取HTML頁面:HTTP請求的處理,urllib、urllib二、requests
  3. 解析服務器響應的內容:re、xpath、BeautifulSoup4(bs4)、jsonpath、pyquery等
  4. 如何採集動態HTML、驗證碼的處理:通用的動態頁面採集:Selenium + PhantomJS(無界面):模擬真實瀏覽器加載js、ajax等非靜態頁面數據。Tesseract:機器學習庫,機器圖像識別系統,能夠處理簡單的驗證碼,複雜的驗證碼能夠經過手動輸入/專門的打碼平臺
  5. Scrapy框架:(Scrapy,Pyspider)
  6. 分佈式策略 scrapy-reids:
  7. 爬蟲 - 反爬蟲 - 反反爬蟲 之間的鬥爭(其實這個地方最後確定是爬蟲勝利,由於爬蟲只是模擬用戶的操做,只要你的網站讓用戶看,那麼爬蟲就能爬下來)
相關文章
相關標籤/搜索