Python網(wǎng)絡(luò)爬蟲(chóng)之利用urllib2通過(guò)URL抓取網(wǎng)頁(yè)內(nèi)容

所謂網(wǎng)頁(yè)抓取,就是把URL地址中指定的網(wǎng)絡(luò)資源從網(wǎng)絡(luò)流中讀取出來(lái),保存到本地。 類似于使用程序模擬IE瀏覽器的功能,把URL作為HTTP請(qǐng)求的內(nèi)容發(fā)送到服務(wù)器端, 然后讀取服務(wù)器端的響應(yīng)資源。

一、通過(guò)urllib2抓取百度網(wǎng)頁(yè)

在Python中,我們使用urllib2這個(gè)組件來(lái)抓取網(wǎng)頁(yè)。urllib2是Python的一個(gè)獲取URLs(Uniform Resource Locators)的組件。它以u(píng)rlopen函數(shù)的形式提供了一個(gè)非常簡(jiǎn)單的接口。最簡(jiǎn)單的urllib2的應(yīng)用代碼只需要四行。

urllib2抓取百度網(wǎng)頁(yè)

我們通過(guò)瀏覽器可以打開(kāi)百度主頁(yè),右擊,選擇查看源代碼(火狐OR谷歌瀏覽器均可),會(huì)發(fā)現(xiàn)也是完全一樣的內(nèi)容。也就是說(shuō),上面這四行代碼將我們?cè)L問(wèn)百度時(shí)瀏覽器收到的代碼們?nèi)看蛴×顺鰜?lái)。這就是一個(gè)最簡(jiǎn)單的urllib2的例子。

當(dāng)然,除了"http:",URL同樣可以使用"ftp:","file:"等等來(lái)替代。HTTP是基于請(qǐng)求和應(yīng)答機(jī)制的:客戶端提出請(qǐng)求,服務(wù)端提供應(yīng)答。

二、urllib結(jié)合Request用法

urllib2用一個(gè)Request對(duì)象來(lái)映射你提出的HTTP請(qǐng)求。在它最簡(jiǎn)單的使用形式中你將用你要請(qǐng)求的地址創(chuàng)建一個(gè)Request對(duì)象,通過(guò)調(diào)用urlopen并傳入Request對(duì)象,將返回一個(gè)相關(guān)請(qǐng)求response對(duì)象,這個(gè)應(yīng)答對(duì)象如同一個(gè)文件對(duì)象,所以你可以在Response中調(diào)用.read()客戶端提出請(qǐng)求,服務(wù)端提供應(yīng)答。

urllib+Request用法

可以看到,以上兩種用法的輸出結(jié)果都是一致的。

三、HTTP請(qǐng)求的同時(shí)傳入?yún)?shù)data

設(shè)置Headers到http請(qǐng)求

有一些網(wǎng)站不喜歡被程序(非人為訪問(wèn))訪問(wèn),或者發(fā)送不同版本的內(nèi)容到不同的瀏覽器。默認(rèn)的urllib2把自己作為“Python-urllib/x.y”(x和y是Python主版本和次版本號(hào),例如Python-urllib/2.7),瀏覽器確認(rèn)自己身份是通過(guò)User-Agent頭,當(dāng)你創(chuàng)建了一個(gè)請(qǐng)求對(duì)象,你可以給他一個(gè)包含頭數(shù)據(jù)的字典。

Headers請(qǐng)求HTTP
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概述 urllib2是Python的一個(gè)針對(duì)URLs的庫(kù)。他以u(píng)rlopen函數(shù)的形式提供了一個(gè)非常簡(jiǎn)單的...
    MiracleJQ閱讀 1,560評(píng)論 0 5
  • 一、網(wǎng)絡(luò)爬蟲(chóng)的定義 網(wǎng)絡(luò)爬蟲(chóng),即Web Spider,是一個(gè)很形象的名字。把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spide...
    隨風(fēng)化作雨閱讀 1,279評(píng)論 0 0
  • 目錄: Python網(wǎng)絡(luò)爬蟲(chóng)(一)- 入門基礎(chǔ)Python網(wǎng)絡(luò)爬蟲(chóng)(二)- urllib爬蟲(chóng)案例Python網(wǎng)絡(luò)爬...
    一只寫程序的猿閱讀 37,640評(píng)論 3 49
  • urllib2是Python的一個(gè)獲取URLs的組件。他以u(píng)rlopen函數(shù)的形式提供了一個(gè)非常簡(jiǎn)單的接口,具有利...
    查無(wú)此人asdasd閱讀 1,626評(píng)論 0 3
  • 傳說(shuō)后羿射日一口氣射掉九個(gè),只余一個(gè)日夜替換,世間又重回平靜安寧。突如其來(lái)的災(zāi)難,讓人們反思,為什么一瞬間出現(xiàn)這么...
    炸裂星冰樂(lè)閱讀 435評(píng)論 0 0

友情鏈接更多精彩內(nèi)容