本人對於Python學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習Python。歡迎各位到來Python學習群:960410445一起討論視訊分享學習。Python是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並不斷的成長,掌握Python核心技術,才是掌握真正的價值所在。
1. 為什麼要爬蟲?
“大資料時代”,資料獲取的方式:
大型企業公司有海量使用者,需要收集資料來提升產品體驗
【百度指數(搜尋),阿里指數(網購),騰訊資料(社交)】
資料管理諮詢公司: 通過資料團隊專門提供大量資料,通過市場調查,問卷調查等
政府/機構提供的公開資料
中華人民共和國統計局
World bank
Nasdaq
第三方資料平臺購買資料
資料堂
貴陽大資料交易平臺
爬蟲資料
2. 什麼是爬蟲?
抓取網頁資料的程式
3. 爬蟲如何抓取網頁資料?
首先需要了解網頁的三大特徵:
每個網頁都有自己的URL(統一資源定位符)來定位
網頁都使用HTML(超文字標記語言)來描述頁面資訊
網頁都使用HTTP/HTTPS(超文字傳輸協議)來傳輸HTML資料
爬蟲的設計思路:
首先確定需要爬取的網URL地址
通過HTTP/HTTPS協議來獲取對應的HTML頁面
提取HTML頁面內有用的資料:
a. 如果是需要的資料--儲存
b. 如果有其他URL,繼續執行第二步
4. Python爬蟲的優勢?
5. 學習路線
抓取HTML頁面:
HTTP請求的處理: urllib, urlib2, requests
處理器的請求可以模擬瀏覽器傳送請求,獲取伺服器響應的檔案
解析伺服器相應的內容:
re, xpath, BeautifulSoup(bs4), jsonpath, pyquery等
使用某種描述性語言來給我們需要提取的資料定義一個匹配規則,符合這個規則的資料就會被匹配
採集動態HTML,驗證碼的處理
通用動態頁面採集: Selenium + PhantomJS:模擬真實瀏覽器載入JS
驗證碼處理: Tesseract機器學習庫,機器影象識別系統
Scrapy框架:
高定製性,高效能(非同步網路框架twisted)->資料下載快
提供了資料儲存,資料下載,提取規則等元件
分散式策略:
scrapy redis:在scarpy基礎上新增了以redis資料庫為核心的一套元件,主要在redis做請求指紋去重、請求分配、資料臨時儲存
爬蟲、反爬蟲、反反爬蟲之間的鬥爭:
User-Agent, 代理, 驗證碼, 動態資料載入, 加密資料
6. 爬蟲的分類
6.1 通用爬蟲:
1.定義: 搜尋引擎用的爬蟲系統
2.目標: 把所有網際網路的網頁爬取下來,放到本地伺服器形成備份,在對這些網頁做相關處理(提取關鍵字,去除廣告),最後提供一個使用者可以訪問的藉口
3.抓取流程:
a) 首先選取一部分已有的URL, 把這些URL放到帶爬取佇列中
b) 從佇列中取出來URL,然後解析NDS得到主機IP,然後去這個IP對應的伺服器裡下載HTML頁面,儲存到搜尋引擎的本地伺服器裡,之後把爬過的URL放入已爬取佇列
c) 分析網頁內容,找出網頁裡其他的URL連線,繼續執行第二步,直到爬取結束
4.搜尋引擎如何獲取一個新網站的URL:
主動向搜尋引擎提交網址: ziyuan.baidu.com/linksubmit/…
在其他網站設定網站的外鏈: 其他網站上面的友情連結
搜尋引擎會和DNS服務商進行合作,可以快速收錄新網站
5.通用爬蟲注意事項
通用爬蟲並不是萬物皆可以爬,它必須遵守規則:
Robots協議:協議會指明通用爬蟲可以爬取網頁的許可權
我們可以訪問不同網頁的Robots許可權
6.通用爬蟲通用流程:
7.通用爬蟲缺點
只能提供和文字相關的內容(HTML,WORD,PDF)等,不能提供多媒體檔案(msic,picture, video)及其他二進位制檔案
提供結果千篇一律,不能針對不同背景領域的人聽不同的搜尋結果
不能理解人類語義的檢索
聚焦爬蟲的優勢所在
DNS 域名解析成IP: 通過在命令框中輸入ping www.baidu.com,得到伺服器的IP
6.2 聚焦爬蟲:
爬蟲程式設計師寫的針對某種內容的爬蟲-> 面向主題爬蟲,面向需要爬蟲