在眾多編程語(yǔ)言當(dāng)中,python爬蟲(chóng)是IT從業(yè)者經(jīng)常用到的。但是還有很多不懂代碼的人,對(duì)于python爬蟲(chóng)是什么不了解,今天我們就來(lái)詳細(xì)介紹一下,python爬蟲(chóng)基礎(chǔ)的入門(mén)知識(shí),這些小知識(shí)包括:python爬蟲(chóng)定義、爬蟲(chóng)基本流程、http協(xié)議請(qǐng)求與響應(yīng)。希望通過(guò)閱讀本文,對(duì)不了解的人有一定的幫助。
python爬蟲(chóng)是什么
爬蟲(chóng)(spider,又網(wǎng)絡(luò)爬蟲(chóng)),是指向網(wǎng)站/網(wǎng)絡(luò)發(fā)起請(qǐng)求,獲取資源后分析并提取有用數(shù)據(jù)的程序。
從技術(shù)層面來(lái)說(shuō)就是 通過(guò)程序模擬瀏覽器請(qǐng)求站點(diǎn)的行為,把站點(diǎn)返回的HTML代碼/JSON數(shù)據(jù)/二進(jìn)制數(shù)據(jù)(圖片、視頻) 爬到本地,進(jìn)而提取自己需要的數(shù)據(jù),存放起來(lái)使用。
爬蟲(chóng)基本流程
用戶(hù)獲取網(wǎng)絡(luò)數(shù)據(jù)的方式:
方式1:瀏覽器提交請(qǐng)求--->下載網(wǎng)頁(yè)代碼--->解析成頁(yè)面
方式2:模擬瀏覽器發(fā)送請(qǐng)求(獲取網(wǎng)頁(yè)代碼)->提取有用的數(shù)據(jù)->存放于數(shù)據(jù)庫(kù)或文件中爬蟲(chóng)要做的就是方式2。
1.發(fā)起請(qǐng)求
使用http庫(kù)向目標(biāo)站點(diǎn)發(fā)起請(qǐng)求,即發(fā)送一個(gè)Request
Request包含:請(qǐng)求頭、請(qǐng)求體等 Request模塊缺陷:不能執(zhí)行JS 和CSS 代碼。
2.獲取響應(yīng)內(nèi)容
如果服務(wù)器能正常響應(yīng),則會(huì)得到一個(gè)ResponseResponse包含:html,json,圖片,視頻等
3.解析內(nèi)容
解析html數(shù)據(jù):正則表達(dá)式(RE模塊)、xpath(主要使用)、beautiful soup、css解析json數(shù)據(jù):json模塊解析二進(jìn)制數(shù)據(jù):以wb的方式寫(xiě)入文件。
4.保存數(shù)據(jù)
數(shù)據(jù)庫(kù)(MySQL,Mongdb、Redis)或 文件的形式。
http協(xié)議請(qǐng)求與響應(yīng)
http協(xié)議:
Request:用戶(hù)將自己的信息通過(guò)瀏覽器(socket client)發(fā)送給服務(wù)器(socket server)
Response:服務(wù)器接收請(qǐng)求,分析用戶(hù)發(fā)來(lái)的請(qǐng)求信息,然后返回?cái)?shù)據(jù)(返回的數(shù)據(jù)中可能包含其他鏈接,如:圖片,js,css等)
ps:瀏覽器在接收Response后,會(huì)解析其內(nèi)容來(lái)顯示給用戶(hù),而爬蟲(chóng)程序在模擬瀏覽器發(fā)送請(qǐng)求然后接收Response后,是要提取其中的有用數(shù)據(jù)。
1.request
(1)請(qǐng)求方式
常見(jiàn)的請(qǐng)求方式:GET / POST
(2)請(qǐng)求的URL
url全球統(tǒng)一資源定位符,用來(lái)定義互聯(lián)網(wǎng)上一個(gè)唯一的資源 例如:一張圖片、一個(gè)文件、一段視頻都可以用url唯一確定
(3)請(qǐng)求頭
●User-agent:請(qǐng)求頭中如果沒(méi)有user-agent客戶(hù)端配置,服務(wù)端可能將你當(dāng)做一個(gè)非法用戶(hù)host
●cookies:cookie用來(lái)保存登錄信息
注意:一般做爬蟲(chóng)都會(huì)加上請(qǐng)求頭。
請(qǐng)求頭需要注意的參數(shù):
●Referrer:訪(fǎng)問(wèn)源至哪里來(lái)(一些大型網(wǎng)站,會(huì)通過(guò)Referrer 做防盜鏈策略;所有爬蟲(chóng)也要注意模擬)
●User-Agent:訪(fǎng)問(wèn)的瀏覽器(要加上否則會(huì)被當(dāng)成爬蟲(chóng)程序)
●cookie:請(qǐng)求頭注意攜帶
(4)請(qǐng)求體
請(qǐng)求體 如果是get方式,請(qǐng)求體沒(méi)有內(nèi)容 (get請(qǐng)求的請(qǐng)求體放在 url后面參數(shù)中,直接能看到) 如果是post方式,請(qǐng)求體是format data
ps:1、登錄窗口,文件上傳等,信息都會(huì)被附加到請(qǐng)求體內(nèi) 2、登錄,輸入錯(cuò)誤的用戶(hù)名密碼,然后提交,就可以看到post,正確登錄后頁(yè)面通常會(huì)跳轉(zhuǎn),無(wú)法捕捉到post
2.response
(1)響應(yīng)狀態(tài)碼
●200:代表成功
●301:代表跳轉(zhuǎn)
●404:文件不存在
●403:無(wú)權(quán)限訪(fǎng)問(wèn)
●502:服務(wù)器錯(cuò)誤
(2)response header
響應(yīng)頭需要注意的參數(shù):Set-Cookie:BDSVRTM=0; path=/:可能有多個(gè),是來(lái)告訴瀏覽器,把cookie保存下來(lái)
(3)preview就是網(wǎng)頁(yè)源代碼
●json數(shù)據(jù)
●如網(wǎng)頁(yè)html,圖片
●二進(jìn)制數(shù)據(jù)等
通過(guò)上述介紹,python爬蟲(chóng)是什么相信大家已經(jīng)清楚了吧,想了解更多關(guān)于python爬蟲(chóng)的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。