溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python爬蟲(chóng)入門(mén)的基本原理是什么

發(fā)布時(shí)間:2020-10-29 09:23:18 來(lái)源:億速云 閱讀:164 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下Python爬蟲(chóng)入門(mén)的基本原理是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

爬蟲(chóng)簡(jiǎn)介

網(wǎng)絡(luò)爬蟲(chóng)(Web crawler),是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本,它們被廣泛用于互聯(lián)網(wǎng)搜索引擎或其他類似網(wǎng)站,可以自動(dòng)采集所有其能夠訪問(wèn)到的頁(yè)面內(nèi)容,以獲取或更新這些網(wǎng)站的內(nèi)容和檢索方式。從功能上來(lái)講,爬蟲(chóng)一般分為數(shù)據(jù)采集,處理,儲(chǔ)存三個(gè)部分。傳統(tǒng)爬蟲(chóng)從一個(gè)或若干初始網(wǎng)頁(yè)的URL開(kāi)始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL放入隊(duì)列,直到滿足系統(tǒng)的一定停止條件。聚焦爬蟲(chóng)的工作流程較為復(fù)雜,需要根據(jù)一定的網(wǎng)頁(yè)分析算法過(guò)濾與主題無(wú)關(guān)的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊(duì)列。然后,它將根據(jù)一定的搜索策略從隊(duì)列中選擇下一步要抓取的網(wǎng)頁(yè)URL,并重復(fù)上述過(guò)程,直到達(dá)到系統(tǒng)的某一條件時(shí)停止。另外,所有被爬蟲(chóng)抓取的網(wǎng)頁(yè)將會(huì)被系統(tǒng)存貯,進(jìn)行一定的分析、過(guò)濾,并建立索引,以便之后的查詢和檢索;對(duì)于聚焦爬蟲(chóng)來(lái)說(shuō),這一過(guò)程所得到的分析結(jié)果還可能對(duì)以后的抓取過(guò)程給出反饋和指導(dǎo)。

爬蟲(chóng)原理

Web網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的功能是下載網(wǎng)頁(yè)數(shù)據(jù),為搜索引擎系統(tǒng)提供數(shù)據(jù)來(lái)源。很多大型的網(wǎng)絡(luò)搜索引擎系統(tǒng)都被稱為基于 Web數(shù)據(jù)采集的搜索引擎系統(tǒng),比如 Google、Baidu。由此可見(jiàn)Web 網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)在搜索引擎中的重要性。網(wǎng)頁(yè)中除了包含供用戶閱讀的文字信息外,還包含一些超鏈接信息。Web網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)正是通過(guò)網(wǎng)頁(yè)中的超連接信息不斷獲得網(wǎng)絡(luò)上的其它網(wǎng)頁(yè)。正是因?yàn)檫@種采集過(guò)程像一個(gè)爬蟲(chóng)或者蜘蛛在網(wǎng)絡(luò)上漫游,所以它才被稱為網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)或者網(wǎng)絡(luò)蜘蛛系統(tǒng),在英文中稱為Spider或者Crawler。

Python爬蟲(chóng)入門(mén)的基本原理是什么

爬蟲(chóng)基本流程

發(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ù)庫(kù),或者保存特定格式的文件。

Request和Response

Request:瀏覽器就發(fā)送消息給該網(wǎng)址所在的服務(wù)器,這個(gè)過(guò)程叫做HTTP Request。

Response:服務(wù)器收到瀏覽器發(fā)送的消息后,能夠根據(jù)瀏覽器發(fā)送消息的內(nèi)容,做相應(yīng)處理,然后把消息回傳給瀏覽器。這個(gè)過(guò)程叫做HTTP Response。瀏覽器收到服務(wù)器的Response信息后,會(huì)對(duì)信息進(jìn)行相應(yīng)處理,然后展示。

Request詳解

請(qǐng)求方式:主要有GET、POST兩種類型,另外還有HEAD、PUT、DELETE、OPTIONS等。

請(qǐng)求URL:URL全稱統(tǒng)一資源定位符,如一個(gè)網(wǎng)頁(yè)文檔、一張圖片、一個(gè)視頻等都可以用URL唯一來(lái)確定。

請(qǐng)求頭:包含請(qǐng)求時(shí)的頭部信息,如User-Agent、Host、Cookies等信息。

請(qǐng)求體:請(qǐng)求時(shí)額外攜帶的數(shù)據(jù)如表單提交時(shí)的表單數(shù)據(jù)。

Response詳解

響應(yīng)狀態(tài):有多種響應(yīng)狀態(tài),如200代表成功、301跳轉(zhuǎn)、404找不到頁(yè)面、502服務(wù)器錯(cuò)誤。

響應(yīng)頭:如內(nèi)容類型、內(nèi)容長(zhǎng)度、服務(wù)器信息、設(shè)置Cookie等等。

響應(yīng)體:最主要的部分,包含了請(qǐng)求資源的內(nèi)容,如網(wǎng)頁(yè)HTML、圖片二進(jìn)制數(shù)據(jù)等。

能抓取哪些數(shù)據(jù)

網(wǎng)頁(yè)文本:如HTML文檔、Json格式文本等。

圖片:獲取到的是二進(jìn)制文件,保存為圖片格式。

視頻:同為二進(jìn)制文件,保存為視頻格式即可。

And so on:只要是能請(qǐng)求到的,都能獲取。

解析方式

直接處理

Json解析

正則表達(dá)式

BeautifulSoup

PyQuery

XPath

抓取中出現(xiàn)的問(wèn)題

問(wèn):為什么我抓到的和瀏覽器看到的不一樣?

答:網(wǎng)頁(yè)通過(guò)瀏覽器的解析,加載CSS與JS等文件對(duì)網(wǎng)頁(yè)進(jìn)行解析渲染,達(dá)到我們看到絢麗的網(wǎng)頁(yè),而我們抓到的文件只是一些代碼,css文件無(wú)法調(diào)用,使得樣式不能表現(xiàn)出來(lái),那么網(wǎng)頁(yè)就會(huì)出現(xiàn)錯(cuò)位等等問(wèn)題。

問(wèn):怎樣解決JavaScript渲染的問(wèn)題?

答:分析Ajax請(qǐng)求、Selenium/WebDriver、Splash、PyV8、Ghost.py等庫(kù)

保存數(shù)據(jù)

文本:純文本、Json、Xml等。

關(guān)系型數(shù)據(jù)庫(kù):如MySQL、Oracle、SQL Server等具有結(jié)構(gòu)化表結(jié)構(gòu)形式存儲(chǔ)。

非關(guān)系型數(shù)據(jù)庫(kù):如MongoDB、Redis等Key-Value形式存儲(chǔ)。

二進(jìn)制文件:如圖片、視頻、音頻等等直接保存成特定格式即可。

以上是Python爬蟲(chóng)入門(mén)的基本原理是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI