小白,謝謝閱讀!
#python筆記
##爬蟲day-1##
###“大數據時代”,數據的獲取方式:
- 企業生產的用戶數據:大型互聯網公司有海量的基礎用戶,所以他們積累有天然數據,有數據意識的中小型企業也有數據積累。
- 數據管理諮詢公司:通常這樣的公司具有很龐大的數據採集團隊,類似於樣本監測,問卷調查,刻意對數據進行收集,和相關企業合作,長久時間的積累。
- 政府/部分盈利/非盈利組織/機構公開的數據:政府通過各地政府進行數據收集和統計。
- 第三方數據平臺:通過各個數據交易平臺來購買各個行業的數據。
- 爬蟲爬取數據:因某些原因需要有目的性的獲取某些數據。
###什麼是爬蟲?
爬蟲:就是抓取網頁數據的程序
###爬蟲如何獲取網頁數據
網頁的三大特徵:
- 每個網頁都有自己的URL(統一資源定位符)來定位網頁。
- 網頁都使用HTML(超文本標記語言)來描述頁面信息。
- 網頁都使用HTTP/HTTPS(超文本傳輸協議)來傳輸HTMl數據。
###爬蟲的設計思路
- 首先確定需要爬取的網頁URL地址
- 通過HTTP/htttps協議來獲取對應的數據html
- 提取HTML頁面的所需數據
- 如果是需要的數據,就保存起來
- 如果是頁面的URL,就重複第二步
- 為什麼使用python做爬蟲
- php對多線程、異步支持不夠好,併發處理能力較弱,效率低。
- Java本身很笨重,代碼量大,重構成本太高。
- C/C++語言本身運行效率和性能幾乎最強,但學習成本太高,代碼成型比較慢。
- python語法優美,代碼簡潔,開發效率高,支持模塊多,相關的HTTP請求模塊,還有強大的爬蟲scrapy,以及成熟的分佈式策略。而且調用接口也很方便。
###學習內容
- 1,掌握python的基本語法知識
- 2,如何抓取HTML頁面
- HTTP請求的處理,urllib,URLlib,requests
- 處理後的請求可以模擬瀏覽器發送請求,獲取服務器響應的文件
- 3,解析服務器響應的內容
- re、xpath、Beautifulsoup4、jsonpath、pyquery等使用某種屬性來匹配響應的內容,被匹配到的就會被獲取
- 4,如何採集動態HTML和對驗證碼的處理
- 通用的動態頁面採集:Sclenium‘+’phantomJS(無界面):模擬真實瀏覽器加載JS、ajax等非靜態頁面的數據頁面
- Tesseract:機器學習庫,機器圖像識別系統,可以用處理簡單的驗證碼,複雜的則需要通過手動識別或打碼平臺處理
- 5,Scrapy框架(Scrapy,Pyspider)
- 高定製性,高性能(異步網絡框架twisted),所以數據下載速度非常快,提供了數據儲存,數據下載,提取規則的組件。
- 6,分佈式策略
- Scrapy-reais,在Scrapy的基礎上提供了一套以Redis數據庫為核心的一套組件,讓Scrapy框架支持分佈式的功能,主要在Redis裡請求指紋去重,請求分配,數據臨時儲存。
- 7,爬蟲---反爬蟲---反反爬蟲之間的鬥爭
- User-Agent、代理、驗證碼、動態數據加載、加密數據。
- 數據價值,是否值得去費勁做反爬蟲機制,
###根據使用場景:通用爬蟲--聚焦爬蟲
- 1.通用爬蟲:搜索引擎用的爬蟲系統
- 目標:儘可能將互聯網上所有的網頁下載下來,放到本地服務器形成備份,在對相關內容進行處理(如,關鍵字處理,去廣告),最後提供一個用戶檢索接口。
- 抓取流程:
- a)首先選取一部分的已有的URL,把這些url放到待爬取隊列。
- b)從隊列取出這些URL,解析DNS得到主機IP,然後取這個IP對飲的那些
- c)分析這些網頁內容,找出網頁裡其他的URL鏈接,繼續執行第二步直到循環結束。
- 搜索引擎如何獲取一個新網站的URL:
- 1主動向搜索引擎提交網址。
- 2在其他網站設置網站的外鏈。
- 3搜索引擎會和DNS服務商進行合作,可以快速收錄新的網站。
- 通用爬蟲並不是萬物皆可爬
- 遵循Robots協議:Robost協議會指定爬蟲能夠爬取的信息。Robots.txt並不是所有的爬蟲都遵循的,一般只有大型搜素引擎爬取,一般個人寫的爬蟲比較自由。
- 通用爬蟲的工作流程:爬取網頁---存儲數據--=內容處理---提供檢索/排名服務
- 搜素引擎排名
- 1.PageRank值:根據網站流量(點擊量/瀏覽量/人氣)統計,流量越高,價值越高。
- 2.競價排名:誰給錢多,誰排名就高。
- 通用爬蟲的缺點:
- 只能提供文本相關內容(html,word,pdf)等但是不能提供多媒體和二進制文件。
- 提供的結果單一,不能提供具有較好的針對性結果。
- 2.聚焦爬蟲:爬蟲程序員寫的針對某種內容的爬蟲--面向主題,面向需求的爬蟲。而且保證需求信息會盡量相關。
補充:
在爬蟲開發過程中需要獲取很多的url信息,而在瀏覽器中的開發者工具並能夠很完全的將信息完善的表現出來,推薦一款抓包工具Fidder。
下載:到官網下載Windows版本就行,
安裝:傻瓜式安裝next,next就行
部署:
越努力越幸運!
閱讀更多 一兒口山石 的文章