PYTHON——爬蟲筆記(一)

一、爬蟲的定義:

程序或者腳本---》自動的爬取萬維網(wǎng)的數(shù)據(jù)的程序或者腳本。

二、爬蟲可以解決的問題:

(1)解決冷啟動問題。

(2)搜索引擎的根基。---通用爬蟲。

(3)幫助機器學(xué)習(xí)建立知識圖譜。

(4)制作各種比價軟件。

三、爬蟲工程師的進階之路:

初級爬蟲工程師

1.web 前端的知識: HTML、CSS、JavaSc1ipt、 DOM、 DHTML 、Ajax、jQuery、json 等;

2、正則表達(dá)式, 能提取正常一般網(wǎng)頁中想要的信息,比如某些特殊的文字, 鏈接信息, 知道什么是懶惰, 什么是貪婪型的正則;

3、會使用 XPath 等獲取一些DOM 結(jié)構(gòu)中的節(jié)點信息;

4、知道什么是深度優(yōu)先, 廣度優(yōu)先的抓取算法, 及實踐中的使用規(guī)則;

5、能分析簡單網(wǎng)站的結(jié)構(gòu), 會使用urllib或requests 庫進行簡單的數(shù)據(jù)抓取。

中級爬蟲工程師:

1、了解什么事HASH,會簡單地使用MD5,SHA1等算法對數(shù)據(jù)進行HASH一遍存儲

2、熟悉HTTP,HTTPS協(xié)議的基礎(chǔ)知識,了解GET,POST方法,了解HTTP頭中的信息,包括返回狀態(tài)碼,編碼,user-agent,cookie,session等

3、能設(shè)置user-agent進行數(shù)據(jù)爬取,設(shè)置代理等

4、知道什么事Request,什么事response,會使用Fiddler等工具抓取及分析簡單地網(wǎng)絡(luò)數(shù)據(jù)包;對于動態(tài)爬蟲,要學(xué)會分析ajax請求,模擬制造post數(shù)據(jù)包請求,抓取客戶端session等信息,對于一些簡單的網(wǎng)站,能夠通過模擬數(shù)據(jù)包進行自動登錄。

5、對于一些難搞定的網(wǎng)站學(xué)會使用phantomjs+selenium抓取一些動態(tài)網(wǎng)頁信息

6、并發(fā)下載,通過并行下載加速數(shù)據(jù)爬取;多線程的使用。

高級爬蟲工程師:

1、能夠使用Tesseract,百度AI,HOG+SVM,CNN等庫進行驗證碼識別。

2、能使用數(shù)據(jù)挖掘技術(shù),分類算法等避免死鏈。

3、會使用常用的數(shù)據(jù)庫進行數(shù)據(jù)存儲,查詢。比如mongoDB,redis;學(xué)習(xí)如何通過緩存避免重復(fù)下載的問題。

4、能夠使用機器學(xué)習(xí)的技術(shù)動態(tài)調(diào)整爬蟲的爬取策略,從而避免被禁IP封禁等。

5、能使用一些開源框架scrapy,scrapy-redis等分布式爬蟲,能部署掌控分布式爬蟲進行大規(guī)模數(shù)據(jù)爬取。

四、搜索引擎:

1、什么是搜索引擎:

搜索引擎通過特定算法,從互聯(lián)網(wǎng)上獲取網(wǎng)頁信息,將其保存到本地,為用戶提供檢索服務(wù)的一種程序。

2、搜索引擎的組成:

搜索引擎主要是是由通用爬蟲組成的。

(1)通用爬蟲:將互聯(lián)網(wǎng)上的網(wǎng)頁信息【整體】爬取下來的爬蟲程序。

(2)搜索引擎的工作步驟:

1、抓取網(wǎng)頁

2、數(shù)據(jù)存儲

3、預(yù)處理

提取文字

中文分詞

消除噪音

。。。

4、設(shè)置網(wǎng)站排名(訪問量),為用戶提供檢索服務(wù)。

(3)為什么搜索引擎可以爬取所有的網(wǎng)頁?---搜索引擎的通用是如何來爬取所有網(wǎng)頁的。

一個網(wǎng)頁就是一個url,這個問題其實在問,【url的獲取來源】。

url的獲取來源:

1、新網(wǎng)站會主動提交網(wǎng)址給搜索引擎。

2、網(wǎng)頁中的一些外鏈,這些url全部都會加入到通用爬蟲的爬取隊列。

3、搜索引擎和dns解析服務(wù)商合作,如果有新網(wǎng)站注冊,搜索引擎就可拿到網(wǎng)址。

3、通用爬蟲的缺陷:

(1)通用爬蟲是爬取整個網(wǎng)頁,但是網(wǎng)頁中90%的內(nèi)容基本是沒用。

(2)不能滿足不同行業(yè),不同人員的不同需求。

(3)只能獲取文字,不能獲取音頻,視頻,文檔等信息。

(4)只能通過關(guān)鍵字查詢,無法通過語義查詢。

4、聚焦爬蟲:

在實施網(wǎng)頁抓取的過程中,【會對內(nèi)容進行篩選】,盡量保證只抓取與【需求相關(guān)】的信息的爬蟲程序。

五、robots協(xié)議:

定義:網(wǎng)絡(luò)爬蟲排除標(biāo)準(zhǔn)

作用:告訴搜索引擎那些可以爬那些不能爬。

六、http協(xié)議:

1、什么是http協(xié)議:

是一種規(guī)范——————>約束發(fā)布和接受html的規(guī)范。

2、http和https

http:超文本傳輸協(xié)議。

https:安全版的http協(xié)議。---ssl---

對稱加密---密鑰

非對稱---私鑰+公鑰

3、數(shù)字簽證

https:443

http:80

? Upgrade-Insecure-Requests: 1:可以將http升級成https請求。

4、http的特點:

(1)應(yīng)用層協(xié)議。

(2)無連接:http每次發(fā)送請求和響應(yīng)的過程都是獨立。

在http 1.0以后,有請求頭:connection:keep-alive:客戶端和服務(wù)建立長連接。

(3)無狀態(tài):http協(xié)議不記錄狀態(tài)。

cookie和session做到請求狀態(tài)的記錄。

cookie是在客戶端保存,session是在服務(wù)器保存。

5、url:統(tǒng)一資源定位符。

(1)主要作用:用來定位互聯(lián)網(wǎng)上的任意資源的位置。

(2)為什么url可以定位任意資源?

組成:https://www.baidu.com/index.html?username=123&password=abc#top

scheme:協(xié)議---https

netloc:網(wǎng)絡(luò)地址:ip:port---www.baidu.com

通過ip定位電腦,通過port定位應(yīng)用。

192.168.92.10:

代理ip:ip:port

path:資源路徑。---index.html

query:請求參數(shù):---?后面的內(nèi)容username=123&password=abc

fragment:錨點----top

原因:url包含netloc可以定位電腦,path定位資源,這樣就可以找到任意在互聯(lián)網(wǎng)上的信息。

(3)特殊符號:

?:后面就是請求參數(shù)

&:連接請求參數(shù)

#:錨點----如果url中有錨點,在爬蟲程序中盡量去除。

6、 http的工作過程:

(1)地址解析:

將url的所有組成部分分別解析出來。

(2)封裝http請求數(shù)據(jù)包。

將第一步解析出來的信息進行裝包。---http數(shù)據(jù)包。

(3)封裝tcp數(shù)據(jù)包,通過三次握手建立tcp。

(4)客戶端發(fā)送請求

(5)服務(wù)發(fā)送響應(yīng)

(6)關(guān)閉tcp連接。

7、當(dāng)我們在瀏覽器輸入一個url,瀏覽器加載出這個頁面,中間做了哪些事?

(1)客戶端解析url,封裝數(shù)據(jù)包,建立連接,發(fā)送請求。

(2)服務(wù)器返回url對應(yīng)資源文件給客戶端,比如:index.html。

(3)客戶端檢查index.html是否有靜態(tài)資源(引用外部文件),比如js,css,圖片。有的話再分別發(fā)送請求,來獲取這些靜態(tài)資源。

(4)客戶端獲取所有靜態(tài),通過html語法,完全將index.html頁面顯示出來。

8、 http的請求方法:

get請求:get(獲取)-->獲取服務(wù)器的指定資源--->涉及到篩選一些信息--->請求參數(shù):主要拼接在url中。--->不安全(別人可以通過url獲取信息)--->請求參數(shù)的大小受限。

post請求:post(郵遞)--->向服務(wù)器傳遞數(shù)據(jù)--->請求數(shù)據(jù)是方法在請求實體中的--->安全--->大小不受限。

9、客戶端請求

(1)組成:請求行、請求頭、空行、請求數(shù)據(jù)(實體)

請求頭:請求方法;host地址,http協(xié)議版本。

(2)請求頭:

user-agent:客戶端標(biāo)識。

accept:允許傳入的文件類型。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3

Referer:標(biāo)識產(chǎn)生請求的網(wǎng)頁來自于哪個網(wǎng)頁。

防盜鏈

cookie:cookie信息。---現(xiàn)在很多網(wǎng)站,必須封裝cookie才給數(shù)據(jù)。

post請求重要的請求頭:

content-type:post請求的數(shù)據(jù)類型

content-length:post請求數(shù)據(jù)的長度。

ajax請求必須封裝的頭:

x-requested-with:xmlhttprequest

10、服務(wù)器響應(yīng):

(1)組成:狀態(tài)行、響應(yīng)頭、空行、響應(yīng)正文。

(2)響應(yīng)頭:

Content-Type:text/html;charset=UTF-8

(3)狀態(tài)碼(面試常考):

1XX:表示服務(wù)器成功接收部分請求,還需要發(fā)剩余請求才能處理整個過程。(處理了一半)

2XX:標(biāo)識服務(wù)器成功接收請求并處理完整個過程。(成功)

200成功

3XX:為了完成請求,客戶端需要進一步細(xì)化請求。

302:重定向

304:使用緩存資源

4XX:客戶端請求錯誤。(url寫錯了)

404:服務(wù)器無法找到請求內(nèi)容。

403:服務(wù)器拒絕訪問,權(quán)限不夠。

5XX:服務(wù)器錯誤。

502:服務(wù)器錯誤

500:請求未完成,服務(wù)器遇到不可知問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 爬蟲概述 1. 目錄清單 爬蟲簡介 通用爬蟲和聚焦爬蟲 網(wǎng)絡(luò)請求那些事兒 網(wǎng)絡(luò)數(shù)據(jù)抓包分析 2. 章節(jié)內(nèi)容 2.1...
    小皇帝s閱讀 737評論 0 1
  • 33款可用來抓數(shù)據(jù)的開源爬蟲軟件工具 要玩大數(shù)據(jù),沒有數(shù)據(jù)怎么玩?這里推薦一些33款開源爬蟲軟件給大家。 爬蟲,即...
    visiontry閱讀 7,698評論 1 99
  • 通過第一課的學(xué)習(xí),我學(xué)到了以下內(nèi)容: 1.如果你找到了通往新世界的鑰匙,請畫一張地圖,讓別人也能進來2.錯誤的思維...
    牧歌爸爸育兒閱讀 293評論 0 2
  • 考研真是扒層皮 天天都在上課 天氣也好 困的站著都快要睡著 今天是愚人節(jié) 收到禮物第一反應(yīng) 就是what??! 恩就...
    柚柚99閱讀 244評論 0 1
  • 2019年8月5號 星期一 天氣:小雨 親子日記第5篇 朋友在這里玩到現(xiàn)在剛走,趕緊把今天的日記寫了,一...
    8307233c4dee閱讀 225評論 0 0

友情鏈接更多精彩內(nèi)容