我們開(kāi)始來(lái)談?wù)刾ython的爬蟲(chóng)。
1,什么是爬蟲(chóng):
網(wǎng)絡(luò)爬蟲(chóng)是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動(dòng)索引、模擬程序或者蠕蟲(chóng)。互聯(lián)網(wǎng)猶如一個(gè)大蜘蛛網(wǎng),我們的爬蟲(chóng)就猶如一個(gè)蜘蛛,當(dāng)在互聯(lián)網(wǎng)遇到所需要的資源,我們就會(huì)爬取下來(lái),即為爬蟲(chóng)是一個(gè)請(qǐng)求網(wǎng)站 并且提取數(shù)據(jù)的自動(dòng)化程序。
2,下面我們來(lái)提到兩個(gè)名詞:
1)請(qǐng)求,request即為我們的請(qǐng)求,當(dāng)我們?cè)跒g覽器內(nèi)輸入網(wǎng)址,敲擊回車(chē)時(shí),這時(shí)瀏覽器就會(huì)發(fā)送消息給該網(wǎng)址所在的服務(wù)器,這個(gè)過(guò)程叫做HTTP Request
2)響應(yīng),response即為我們的響應(yīng),服務(wù)器在接收到瀏覽器發(fā)送的消息后,能夠根據(jù)瀏覽器發(fā)送消息的內(nèi)容做出相應(yīng)的處理,然后把消息回傳給瀏覽器。這個(gè)過(guò)程就做HTTP Response。瀏覽器收到服務(wù)器的Response信息后,會(huì)對(duì)信息進(jìn)行處理,然后展示。
3,Request中包含什么?
1)請(qǐng)求方式,請(qǐng)求方式主要包含get,post,另外還有put,head,delete,options等,但我們常用的、常見(jiàn)的還是get和post請(qǐng)求。
get請(qǐng)求:get請(qǐng)求方式所有的參數(shù)都包含在URL地址里,get請(qǐng)求可以直接在瀏覽器地址欄內(nèi)輸入U(xiǎn)RL地址,然后直接訪問(wèn)。
post請(qǐng)求:比get方式多包含一個(gè)formdata數(shù)據(jù),且參數(shù)沒(méi)有在URL地址內(nèi)。不可以直接在地址欄訪問(wèn),需要構(gòu)造一個(gè)form表單,進(jìn)行提交訪問(wèn)。
同時(shí)post請(qǐng)求所有參數(shù)不顯示地址欄內(nèi),相對(duì)于get請(qǐng)求來(lái)說(shuō)更安全。
2)請(qǐng)求URL,URL全稱(chēng)統(tǒng)一資源定位符,如一個(gè)網(wǎng)頁(yè)文檔、一張圖片、一個(gè)視頻等都可以用URL唯一來(lái)確定。
3)請(qǐng)求頭,包含請(qǐng)求時(shí)的頭部信息,如User-Agent、Host、Cookies等信息,請(qǐng)求頭是一個(gè)很重要的參數(shù),在很多爬蟲(chóng)里需要設(shè)置請(qǐng)求頭信息,
一般權(quán)限驗(yàn)證,瀏覽器類(lèi)型等信息,如下圖所示:
4)請(qǐng)求體,請(qǐng)求時(shí)額外攜帶的數(shù)據(jù),如表單提交時(shí)的表單數(shù)據(jù),一般來(lái)說(shuō)get方式請(qǐng)求時(shí),都沒(méi)有請(qǐng)求體。
4,Response中包含什么?
1)響應(yīng)狀態(tài),有多種響應(yīng)狀態(tài),如200代表成功,404找不到頁(yè)面,500服務(wù)器錯(cuò)誤
擴(kuò)展:
-1xx :報(bào)告的 -請(qǐng)求被接收到,繼續(xù)處理
-2xx :成功 - 被成功地接收(received),理解(understood),接受(accepted)的動(dòng)作 。
-3xx :重發(fā) - 為了完成請(qǐng)求必須采取進(jìn)一步的動(dòng)作。
-4xx :客戶端出錯(cuò) - 請(qǐng)求包括錯(cuò)的語(yǔ)法或不能被滿足。
-5xx :服務(wù)器出錯(cuò) - 服務(wù)器無(wú)法完成顯然有效的請(qǐng)求。
2)響應(yīng)頭,如內(nèi)容類(lèi)型、內(nèi)容長(zhǎng)度、服務(wù)器信息、設(shè)置Cookie等等信息。如圖所示:
3)響應(yīng)體,最主要的部分,包含了請(qǐng)求資源的內(nèi)容,如網(wǎng)頁(yè)HTML,圖片,二進(jìn)制數(shù)據(jù)(視頻,圖片等)等信息。
我們爬取的數(shù)據(jù)大部分就是從這個(gè)部分獲取的
5,我們所需要的環(huán)境和資源
1)python環(huán)境,最好是python3,python2在2020年就不再維護(hù)了,語(yǔ)法還是有一定差異的,我建議使用python3。
2)redis,mongo分關(guān)系型數(shù)據(jù)庫(kù),安裝過(guò)程自行百度。(后期會(huì)有專(zhuān)門(mén)的博客來(lái)說(shuō)明講解非關(guān)系型數(shù)據(jù)庫(kù))。
3)scrapy環(huán)境,pip install scrapy即可安裝。
4)Urllib庫(kù),Requests庫(kù),BeautifulSoup庫(kù),PyQuery,Selenium和與其相關(guān)聯(lián)的環(huán)境配置(后面我們會(huì)逐個(gè)來(lái)說(shuō)明每一個(gè)庫(kù)和其操作使用方法)。
?
總結(jié): 爬蟲(chóng)是一個(gè)請(qǐng)求網(wǎng)站并且提取數(shù)據(jù)的自動(dòng)化程序。有的是通過(guò)原生html標(biāo)簽就可以獲取到數(shù)據(jù),則有的需要通過(guò)解析ajax請(qǐng)求來(lái)取得數(shù)據(jù)。
?
第一次寫(xiě)博客,還是有點(diǎn)點(diǎn)緊張,我也是現(xiàn)學(xué)現(xiàn)賣(mài)的,歡迎斧正。謝謝...
?
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
