[TOC] 1. 為什麼要爬蟲? “大數據時代”,數據獲取的方式: 大型企業公司有海量用戶,需要收集數據來提升產品體驗 【百度指數(搜索),阿裡指數(網購),騰訊數據(社交)】 數據管理咨詢公司: 通過數據團隊專門提供大量數據,通過市場調研,問卷調查等 政府/機構提供的公開數據 中華人民共和國統計局 ...
目錄
# 1. 為什麼要爬蟲?
“大數據時代”,數據獲取的方式:
- 大型企業公司有海量用戶,需要收集數據來提升產品體驗
【百度指數(搜索),阿裡指數(網購),騰訊數據(社交)】
- 數據管理咨詢公司: 通過數據團隊專門提供大量數據,通過市場調研,問卷調查等
- 政府/機構提供的公開數據
- 中華人民共和國統計局
- World bank
- Nasdaq
- 中華人民共和國統計局
- 第三方數據平臺購買數據
- 數據堂
- 貴陽大數據交易平臺
- 數據堂
- 爬蟲數據
2. 什麼是爬蟲?
抓取網頁數據的程式
3. 爬蟲如何抓取網頁數據?
首先需要瞭解網頁的三大特征:
- 每個網頁都有自己的
URL
(統一資源定位符)來定位
- 網頁都使用
HTML
(超文本標記語言)來描述頁面信息
- 網頁都使用
HTTP/HTTPS
(超文本傳輸協議)來傳輸HTML數據
爬蟲的設計思路:
- 首先確定需要爬取的網
URL
地址
- 通過
HTTP/HTTPS
協議來獲取對應的HTML
頁面
- 提取
HTML
頁面內有用的數據:
a. 如果是需要的數據--保存
b. 如果有其他URL
,繼續執行第二步
# 4. Python爬蟲的優勢?
語言 | 優點 | 缺點 |
---|---|---|
PHP | 世界上最好的語言 | 對多線程,非同步支持不好,併發處理不夠 |
Java | 網路爬蟲生態圈完善 | Java語言本身笨重,代碼量很大,數據重構成本高 |
C/C++ | 運行效率和性能幾乎最強 | 學習成本很高 |
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:
- 主動向搜索引擎提交網址: https://ziyuan.baidu.com/linksubmit/index
- 在其他網站設置網站的外鏈: 其他網站上面的友情鏈接
- 搜索引擎會和DNS服務商進行合作,可以快速收錄新網站
5.通用爬蟲註意事項
通用爬蟲並不是萬物皆可以爬,它必須遵守規則:
Robots協議
:協議會指明通用爬蟲可以爬取網頁的許可權
我們可以訪問不同網頁的Robots許可權


6.通用爬蟲通用流程:

7.通用爬蟲缺點
- 只能提供和文本相關的內容(HTML,WORD,PDF)等,不能提供多媒體文件(msic,picture, video)及其他二進位文件
- 提供結果千篇一律,不能針對不同背景領域的人聽不同的搜索結果
- 不能理解人類語義的檢索
- 聚焦爬蟲的優勢所在
DNS 功能變數名稱解析成IP: 通過在命令框中輸入ping www.baidu.com
,得到伺服器的IP
6.2 聚焦爬蟲:
爬蟲程式員寫的針對某種內容的爬蟲-> 面向主題爬蟲,面向需要爬蟲