Python爬蟲的基本概念、分類、學習路線以及爬取資料思路

嗨學程式設計發表於2019-01-03
本人對於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爬蟲的優勢?

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.目標: 把所有網際網路的網頁爬取下來,放到本地伺服器形成備份,在對這些網頁做相關處理(提取關鍵字,去除廣告),最後提供一個使用者可以訪問的藉口

Python爬蟲的基本概念、分類、學習路線以及爬取資料思路

3.抓取流程:

a) 首先選取一部分已有的URL, 把這些URL放到帶爬取佇列中

b) 從佇列中取出來URL,然後解析NDS得到主機IP,然後去這個IP對應的伺服器裡下載HTML頁面,儲存到搜尋引擎的本地伺服器裡,之後把爬過的URL放入已爬取佇列

c) 分析網頁內容,找出網頁裡其他的URL連線,繼續執行第二步,直到爬取結束

4.搜尋引擎如何獲取一個新網站的URL:

主動向搜尋引擎提交網址: ziyuan.baidu.com/linksubmit/…

在其他網站設定網站的外鏈: 其他網站上面的友情連結

搜尋引擎會和DNS服務商進行合作,可以快速收錄新網站

5.通用爬蟲注意事項

通用爬蟲並不是萬物皆可以爬,它必須遵守規則:

Robots協議:協議會指明通用爬蟲可以爬取網頁的許可權

我們可以訪問不同網頁的Robots許可權

Python爬蟲的基本概念、分類、學習路線以及爬取資料思路
Python爬蟲的基本概念、分類、學習路線以及爬取資料思路

6.通用爬蟲通用流程:

Python爬蟲的基本概念、分類、學習路線以及爬取資料思路

7.通用爬蟲缺點

只能提供和文字相關的內容(HTML,WORD,PDF)等,不能提供多媒體檔案(msic,picture, video)及其他二進位制檔案

提供結果千篇一律,不能針對不同背景領域的人聽不同的搜尋結果

不能理解人類語義的檢索

聚焦爬蟲的優勢所在

DNS 域名解析成IP: 通過在命令框中輸入ping www.baidu.com,得到伺服器的IP

Python爬蟲的基本概念、分類、學習路線以及爬取資料思路

6.2 聚焦爬蟲:

爬蟲程式設計師寫的針對某種內容的爬蟲-> 面向主題爬蟲,面向需要爬蟲


相關文章