Python爬蟲(chóng)需要掌握哪些知識(shí)-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)專注于舞鋼企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站定制開(kāi)發(fā)。舞鋼網(wǎng)站建設(shè)公司,為舞鋼等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

這篇文章將為大家詳細(xì)講解有關(guān)Python爬蟲(chóng)需要掌握哪些知識(shí),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

什么是 “爬蟲(chóng)”?

簡(jiǎn)單來(lái)說(shuō),寫(xiě)一個(gè)從 web 上獲取需要數(shù)據(jù)并按規(guī)定格式存儲(chǔ)的程序就叫爬蟲(chóng);

爬蟲(chóng)理論上步驟很簡(jiǎn)單,第一步獲取 html 源碼,第二步分析 html 并拿到數(shù)據(jù)。但實(shí)際操作,老麻煩了~

用 Python 寫(xiě) “爬蟲(chóng)” 有哪些方便的庫(kù)

常用網(wǎng)絡(luò)請(qǐng)求庫(kù):requests、urllib、urllib2、

urllib 和 urllib2 是 Python 自帶模塊,requests 是第三方庫(kù)

常用解析庫(kù)和爬蟲(chóng)框架:

BeautifulSoup、lxml、HTMLParser、selenium、Scrapy

HTMLParser 是 Python 自帶模塊;

BeautifulSoup 可以將 html 解析成 Python 語(yǔ)法對(duì)象,直接操作對(duì)象會(huì)非常方便;

lxml 可以解析 xml 和 html 標(biāo)簽語(yǔ)言,優(yōu)點(diǎn)是速度快;

selenium 調(diào)用瀏覽器的 driver,通過(guò)這個(gè)庫(kù)你可以直接調(diào)用瀏覽器完成某些操作,比如輸入驗(yàn)證碼;

Scrapy 很強(qiáng)大且有名的爬蟲(chóng)框架,可以輕松滿足簡(jiǎn)單網(wǎng)站的爬??;

爬蟲(chóng) 需要掌握哪些知識(shí)

1)超文本傳輸協(xié)議 HTTP:HTTP 協(xié)議定義了瀏覽器怎樣向萬(wàn)維網(wǎng)服務(wù)器請(qǐng)求萬(wàn)維網(wǎng)文檔,以及服務(wù)器怎樣把文檔傳送給瀏覽器。常用的 HTTP 方法有 GET、POST、PUT、DELETE。

2)統(tǒng)一資源定位符 URL: URL 是用來(lái)表示從因特網(wǎng)上得到的資源位置和訪問(wèn)這些資源的方法。URL 給資源的位置提供一種抽象的識(shí)別方法,并用這種方法給資源定位。只要能夠?qū)Y源定位,系統(tǒng)就可以對(duì)資源進(jìn)行各種操作,如存取、更新、替換和查找其屬性。URL 相當(dāng)于一個(gè)文件名在網(wǎng)絡(luò)范圍的擴(kuò)展。

3)超文本標(biāo)記語(yǔ)言 HTTP:HTML 指的是超文本標(biāo)記語(yǔ)言,是使用標(biāo)記標(biāo)簽來(lái)描述網(wǎng)頁(yè)的。HTML 文檔包含 HTML 標(biāo)簽和純文本,也稱為網(wǎng)頁(yè)。Web 瀏覽器的作用是讀取 HTML 文檔,并以網(wǎng)頁(yè)的形式顯示出它們。瀏覽器不會(huì)顯示 HTML 標(biāo)簽,而是使用標(biāo)簽來(lái)解釋頁(yè)面的內(nèi)容。簡(jiǎn)而言之就是你要懂點(diǎn)前端語(yǔ)言,這樣描述更直觀貼切。

4)瀏覽器調(diào)試功能:學(xué)爬蟲(chóng)就是抓包,對(duì)請(qǐng)求和響應(yīng)進(jìn)行分析,用代碼來(lái)模擬

進(jìn)階爬蟲(chóng)

熟練了基本爬蟲(chóng)之后,你會(huì)想著獲取更多的數(shù)據(jù),抓取更難的網(wǎng)站,然后你就會(huì)發(fā)現(xiàn)獲取數(shù)據(jù)并不簡(jiǎn)單,而且現(xiàn)在反爬機(jī)制也非常的多。

a. 爬取知乎、簡(jiǎn)書(shū),需要登錄并將下次的請(qǐng)求時(shí)將 sessions 帶上,保持登錄姿態(tài);

b. 爬取亞馬遜、京東、天貓等商品信息,由于信息量大、反爬機(jī)制完善,需要分布式【這里就難了】爬取,以及不斷切換 USER_AGENT 和代理 IP;

c. 滑動(dòng)或下拉加載和同一 url 加載不同數(shù)據(jù)時(shí),涉及 ajax 的異步加載。這里可以有簡(jiǎn)單的返回 html 代碼、或者 json 數(shù)據(jù),也可能有更變態(tài)的返回 js 代碼然后用瀏覽器執(zhí)行,邏輯上挺簡(jiǎn)單、但是寫(xiě)代碼那叫一個(gè)苦哇;

d. 還有點(diǎn)是需要面對(duì)的,驗(yàn)證碼識(shí)別。這個(gè)有專門(mén)解析驗(yàn)證碼的平臺(tái)..... 不屬于爬蟲(chóng)范疇了,自己處理需要更多的數(shù)據(jù)分析知識(shí)。

e. 數(shù)據(jù)儲(chǔ)存,關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)的選擇和使用,設(shè)計(jì)防冗余數(shù)據(jù)庫(kù)表格,去重。大量數(shù)據(jù)存儲(chǔ)數(shù)據(jù)庫(kù),會(huì)變得很頭疼,

f. 編碼解碼問(wèn)題,數(shù)據(jù)的存儲(chǔ)涉及一個(gè)格式的問(wèn)題,python2 或者 3 也都會(huì)涉及編碼問(wèn)題。另外網(wǎng)頁(yè)結(jié)構(gòu)的不規(guī)范性,編碼格式的不同很容易觸發(fā)編碼異常問(wèn)題。下圖一個(gè)簡(jiǎn)單的轉(zhuǎn)碼規(guī)則

一些常見(jiàn)的限制方式

a.Basic Auth:一般會(huì)有用戶授權(quán)的限制,會(huì)在 headers 的 Autheration 字段里要求加入;

b.Referer:通常是在訪問(wèn)鏈接時(shí),必須要帶上 Referer 字段,服務(wù)器會(huì)進(jìn)行驗(yàn)證,例如抓取京東的評(píng)論;

c.User-Agent:會(huì)要求真是的設(shè)備,如果不加會(huì)用編程語(yǔ)言包里自有 User-Agent,可以被辨別出來(lái);

d.Cookie:一般在用戶登錄或者某些操作后,服務(wù)端會(huì)在返回包中包含 Cookie 信息要求瀏覽器設(shè)置 Cookie,沒(méi)有 Cookie 會(huì)很容易被辨別出來(lái)是偽造請(qǐng)求;也有本地通過(guò) JS,根據(jù)服務(wù)端返回的某個(gè)信息進(jìn)行處理生成的加密信息,設(shè)置在 Cookie 里面;

e.Gzip:請(qǐng)求 headers 里面帶了 gzip,返回有時(shí)候會(huì)是 gzip 壓縮,需要解壓;

f.JavaScript 加密操作:一般都是在請(qǐng)求的數(shù)據(jù)包內(nèi)容里面會(huì)包含一些被 javascript 進(jìn)行加密限制的信息,例如新浪微博會(huì)進(jìn)行 SHA1 和 RSA 加密,之前是兩次 SHA1 加密,然后發(fā)送的密碼和用戶名都會(huì)被加密;

g. 網(wǎng)站自定義其他字段:因?yàn)?http 的 headers 可以自定義地段,所以第三方可能會(huì)加入了一些自定義的字段名稱或者字段值,這也是需要注意的。

真實(shí)的請(qǐng)求過(guò)程中,其實(shí)不止上面某一種限制,可能是幾種限制組合在一次,比如如果是類似 RSA 加密的話,可能先請(qǐng)求服務(wù)器得到 Cookie,然后再帶著 Cookie 去請(qǐng)求服務(wù)器拿到公鑰,然后再用 js 進(jìn)行加密,再發(fā)送數(shù)據(jù)到服務(wù)器。所以弄清楚這其中的原理,并且耐心分析很重要。

爬蟲(chóng)入門(mén)不難,但是需要知識(shí)面更廣和更多的耐心 

一句話概括爬蟲(chóng) —— 爬蟲(chóng)本質(zhì)就是 cosplay,將爬蟲(chóng)模擬成各種【USER_AGENT】瀏覽器,甚至還模擬成別人【ip 代理】的瀏覽器。

關(guān)于Python爬蟲(chóng)需要掌握哪些知識(shí)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

分享文章:Python爬蟲(chóng)需要掌握哪些知識(shí)-創(chuàng)新互聯(lián)
當(dāng)前URL:http://muchs.cn/article14/dhecde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)全網(wǎng)營(yíng)銷推廣、定制網(wǎng)站、App設(shè)計(jì)、網(wǎng)站建設(shè)、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化