企業(yè)網(wǎng)站建站寧波seo公司
功能相對(duì)單一,只針對(duì)特定網(wǎng)站的特定內(nèi)容進(jìn)行爬取,比如說(shuō)去某個(gè)網(wǎng)站批量獲取某些數(shù)據(jù),這也是我們個(gè)人最常用的一種爬蟲了。
③增量式爬蟲(只采集更新后的內(nèi)容)
這其實(shí)是聚焦爬蟲的一個(gè)迭代爬蟲,它只采集更新后的數(shù)據(jù),對(duì)老數(shù)據(jù)是不采集,相當(dāng)于一直存在并運(yùn)行,只要有符合要求的數(shù)據(jù)更新了,就會(huì)自動(dòng)爬取新的數(shù)據(jù)。
3.Robots協(xié)議
在爬蟲中有一個(gè)叫Robots協(xié)議需要注意一下,又稱為“網(wǎng)絡(luò)爬蟲排除標(biāo)準(zhǔn)”,它的作用就是網(wǎng)站告訴你哪些東西能爬,哪些不能爬。
這個(gè)Robots協(xié)議去哪看?一般情況下直接在網(wǎng)站首頁(yè)網(wǎng)址后面加/robots.txt就能查看,比如百度的Robots協(xié)議就在https://www.baidu.com/robots.txt ,可以看到里面有很多網(wǎng)址都規(guī)定了不能爬,比如Disallow:/shifen/ 說(shuō)明當(dāng)前Disallow:/shifen以及Disallow:/shifen下面的子目錄網(wǎng)頁(yè)均不能爬。
其實(shí)這個(gè)Robots協(xié)議屬于一個(gè)君子協(xié)議,對(duì)于爬蟲者來(lái)說(shuō),基本上就是口頭協(xié)議,你違反了它你有可能會(huì)被追究法律責(zé)任,但不違反它,爬蟲將是爬不到什么數(shù)據(jù),所以平時(shí)雙方都是睜一只閉一眼,不要太囂張就可以了。
粉絲專屬福利,站內(nèi)跳轉(zhuǎn)
1.爬蟲的4步
爬蟲是怎么干活的?爬蟲程序大致上可以分為四步走:
①發(fā)起請(qǐng)求
通過(guò)HTTP庫(kù)向目標(biāo)站點(diǎn)發(fā)起請(qǐng)求,即發(fā)送一個(gè)Request,請(qǐng)求可以包含額外的headers等信息,等待服務(wù)器響應(yīng)。
②獲取響應(yīng)內(nèi)容
如果服務(wù)器能正常響應(yīng),會(huì)得到一個(gè)Response,Response的內(nèi)容便是所要獲取的頁(yè)面內(nèi)容,類型可能有HTML、Json字符串和二進(jìn)制數(shù)據(jù)(如圖片視頻)等類型。
③解析內(nèi)容
得到的內(nèi)容可能是HTML,可以用正則表達(dá)式、網(wǎng)頁(yè)解析庫(kù)進(jìn)行解析??赡苁荍son,可以直接轉(zhuǎn)為Json對(duì)象解析,可能是二進(jìn)制數(shù)據(jù),可以做保存或者進(jìn)一步的處理。
④保存數(shù)據(jù)
保存的數(shù)據(jù)樣式很多,可以保存為文本,也可以保存至數(shù)據(jù)庫(kù),或者保存為特定格式的文件。
基本上這就是爬蟲要遵循的四步了。
2.Request和Response
Request和Response是爬蟲中最重要的一部分,Request和Response是什么關(guān)系?它們兩的關(guān)系如下圖:
簡(jiǎn)單理解一下,當(dāng)我們?cè)陔娔X的瀏覽器上搜索某個(gè)東西的時(shí)候,比如前面的所說(shuō)的在百度搜索“Python”,你點(diǎn)擊百度一下,就已經(jīng)向百度的服務(wù)器發(fā)送了一個(gè)Request請(qǐng)求,Request包含了很多的信息,比如身份信息、請(qǐng)求信息等等,服務(wù)器接收請(qǐng)求之后做判斷,然后返回一個(gè)Response給我們的電腦,這其中也包含了很多信息,比如請(qǐng)求成功與否,比如我們請(qǐng)求的信息結(jié)果(文字、圖片和視頻等等)。
這樣講應(yīng)該很好理解吧?接下來(lái)我們?cè)俸煤萌タ匆幌翿equest和Response。
Request包含了哪些東西?它主要包含了以下一些東西:
1.請(qǐng)求方式
請(qǐng)求方式可以理解為你跟網(wǎng)站打招呼的方式,你要從網(wǎng)站拿到數(shù)據(jù),你就得用正確的方式去跟它打招呼,它才有可能理你,就好比你要?jiǎng)e人家借個(gè)東西,你得先敲門再說(shuō)你好,你直接爬窗戶進(jìn)去這誰(shuí)瞧見(jiàn)了都得給你攆出去。
主要的請(qǐng)求方式有GET和POST,另外還有HEAD/PUT/DELETE/OPTIONS等等其他方式,其中最常用的還是GET這種請(qǐng)求方式。
2.請(qǐng)求URL
什么是URL?URL全稱統(tǒng)一資源定位符,比如一個(gè)網(wǎng)頁(yè)文檔、圖片、視頻等等都有唯一的URL,在爬蟲中我們可以理解為網(wǎng)址或者鏈接。
3.請(qǐng)求頭
什么是請(qǐng)求頭?英文名Request Headers,通常是指請(qǐng)求時(shí)包含的頭部信息,比如User-Agent、Host、Cookies等等。
這些東西它相當(dāng)于你向網(wǎng)站發(fā)送請(qǐng)求時(shí)你的身份信息,這里面經(jīng)常需要偽裝一下自己,偽裝成普通用戶,避免你的目標(biāo)網(wǎng)站識(shí)別出來(lái)你是爬蟲程序,規(guī)避一些反扒問(wèn)題,順利拿到數(shù)據(jù)。
4.請(qǐng)求體
官方一點(diǎn)的說(shuō)辭就是請(qǐng)求時(shí)額外攜帶的數(shù)據(jù),如表單提交時(shí)的表單數(shù)據(jù)。
怎么理解?就比如說(shuō)你去你岳父家提親,你不能空著手過(guò)去提親對(duì)吧?你得帶點(diǎn)東西才像個(gè)提親的樣子,你岳父才會(huì)把女兒許配給你,這是大家通用的禮數(shù),少不了的。
在爬蟲當(dāng)中怎么理解?比如說(shuō)在某些頁(yè)面你得先登錄了或者你得告訴我你請(qǐng)求什么,比如說(shuō)你在百度這個(gè)網(wǎng)頁(yè)中搜索“Python”,那么這個(gè)“Python”這個(gè)關(guān)鍵字就是你要攜帶的請(qǐng)求體,看到了你的請(qǐng)求體,百度才知道你要干什么。
當(dāng)然了,請(qǐng)求體通常是用在POST這種請(qǐng)求方式里面,在GET請(qǐng)求時(shí)我們通常是拼接在URL里面,這里先理解一下就可以了,后續(xù)具體爬蟲可以去加深理解。
5.實(shí)操查看Request
既然Request的理論我們已經(jīng)講過(guò)了,那么我們就可以去實(shí)操看一下Request具體在哪個(gè)位置以及包含哪些東西。
以谷歌瀏覽器Chrome為例,我輸入關(guān)鍵字“Python”可以搜索出一堆結(jié)果,我們來(lái)用網(wǎng)頁(yè)自帶的控制臺(tái)窗口來(lái)分析一下我們發(fā)出的Request請(qǐng)求。
按住F12或者在網(wǎng)頁(yè)空白處右鍵選擇“檢查”,然后可以看到控制臺(tái)里面有很多選擇,比如說(shuō)上面那一欄有一個(gè)菜單欄,初級(jí)爬蟲一般我們就比較常用到的是Elements(元素)和Network(網(wǎng)絡(luò)),其他的東西暫時(shí)用不到,等你學(xué)到了高級(jí)一點(diǎn)的爬蟲就會(huì)用到了,比如JS逆向的時(shí)候可能會(huì)用到Application這個(gè)窗口,后面用到了再了解。
Elements包含了所有的請(qǐng)求結(jié)果的每一個(gè)元素,比如每一個(gè)圖片的源代碼都是有的,尤其是當(dāng)你點(diǎn)了左上角的小箭頭之后,你移動(dòng)到的每一個(gè)地方在Elements窗口下都會(huì)顯示對(duì)于的源代碼。
Network就是爬蟲常用到的網(wǎng)絡(luò)信息,其中就有我們的Request,我們來(lái)看一下,在Network窗口下,勾選Disable cache(禁用緩存),并把All點(diǎn)上。
刷新一下網(wǎng)頁(yè)看看效果,可以看出我們發(fā)出了132個(gè)Request請(qǐng)求,這個(gè)不用好奇,雖然我們只是向百度發(fā)出了“Python”這么一個(gè)請(qǐng)求,但有些是網(wǎng)頁(yè)附帶的請(qǐng)求。
雖然里面有很多類型,什么圖片格式的png啊jpeg等等,但是你可以滑動(dòng)到最上面,在Type(類型)那一列中有document這種類型,就是網(wǎng)頁(yè)文檔的意思,點(diǎn)擊進(jìn)去就有我們的Request信息。
點(diǎn)擊document進(jìn)去之后,又有一欄新的菜單欄,在Headers那一欄下面,我們可以看到 Request URL,也就是我們前面說(shuō)的請(qǐng)求URL,這個(gè)URL才是我們真正向網(wǎng)頁(yè)請(qǐng)求的URL,然后還有請(qǐng)求方式,可以看出來(lái)是GET請(qǐng)求這種方式。
往下再滑動(dòng)一下,還可以看到我們前面講的請(qǐng)求頭 Request Headers ,信息很多,但我們前面講的User-Agent、Host、Cookies都是有的,這些都是我們給服務(wù)器的信息。
Request Headers里面內(nèi)容雖然多,我們?cè)趯懪老x程序的時(shí)候也是要在這方面做偽裝工作,但并不是所有的信息我們都要寫,選擇性地寫一些重要的信息就可以了,比如User-Agent必帶,Referer和Host是選擇性地帶,cookie在要登錄的情況下會(huì)帶,常用的也就4項(xiàng)要做偽裝。
至于請(qǐng)求體這里我就暫時(shí)不做查看了,因?yàn)槲覀冞@里的請(qǐng)求方式是GET請(qǐng)求,在POST請(qǐng)求中才能查看到請(qǐng)求體,沒(méi)關(guān)系,爬蟲用到了你自然就會(huì)明白的。
Response主要包括3塊內(nèi)容,我們來(lái)一一了解一下。
1.響應(yīng)狀態(tài)
我們發(fā)送請(qǐng)求之后,網(wǎng)站會(huì)返回給我們一個(gè)Response,這其中就包括了響應(yīng)狀態(tài)碼對(duì)于的響應(yīng)狀態(tài),大致可以分為以下幾種:
①兩百范圍,比如響應(yīng)狀態(tài)碼200則表示成功。
②三百范圍,比如301表示跳轉(zhuǎn)。
③四百范圍,比如404找不到網(wǎng)頁(yè)。
④五百范圍,比如502找不到網(wǎng)頁(yè)。
對(duì)于爬蟲來(lái)說(shuō),兩三百則是我們最希望看到的響應(yīng)狀態(tài),有可能會(huì)拿到數(shù)據(jù),四五百基本上就涼了,拿不到數(shù)據(jù)的。
比如我們剛在在前面的Request請(qǐng)求發(fā)送時(shí),在document文件中,在Headers窗口下的General里面可以看出響應(yīng)狀態(tài)碼是200,說(shuō)明網(wǎng)頁(yè)成功響應(yīng)了我們的請(qǐng)求。
2.響應(yīng)頭
服務(wù)器給我們的信息里面也會(huì)有響應(yīng)頭這一部分,這里面包含了內(nèi)容類型、內(nèi)容長(zhǎng)度、服務(wù)器信息和設(shè)置Cookie等等。
其實(shí)響應(yīng)頭對(duì)我們來(lái)說(shuō)并不是那么重要,這里了解一下就可以了。
3.響應(yīng)體
這個(gè)就很重要了,除了前面第一點(diǎn)的響應(yīng)狀態(tài),就是它了,因?yàn)樗苏?qǐng)求資源的內(nèi)容,比如網(wǎng)頁(yè)HTML和圖片二進(jìn)制數(shù)等等。
響應(yīng)體在哪里呢?也是在document文件里面的Response那一欄,可以往下滑動(dòng)就可以看出里面有很多響應(yīng)的數(shù)據(jù),這就是我們獲取到的數(shù)據(jù),有的是可以直接下載的,有的則是需要用技術(shù)去解析才能拿到。
爬蟲能獲取到什么樣的數(shù)據(jù)?基本上可以分為這么幾類:
①網(wǎng)頁(yè)文檔,如果HTML文檔、Json格式文本等。
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)Python工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年P(guān)ython開(kāi)發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上前端開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄大綱截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且后續(xù)會(huì)持續(xù)更新
如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以掃碼獲取!!!(備注Python)
71c1fb70aad5355a2c5eeff0.png)
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上前端開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄大綱截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且后續(xù)會(huì)持續(xù)更新
如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以掃碼獲取!!!(備注Python)
