【Python網路爬蟲二】使用urllib2抓去網頁內容

來源:互聯網
上載者:User

標籤:lib   .com   通過   header   target   python   gen   表示   內容   

在Python中通過匯入urllib2組件,來完成網頁的抓取工作。在python3.x中被改為urllib.request。

爬取具體的過程類似於使用程式類比IE瀏覽器的功能,把URL作為HTTP請求的內容發送到伺服器端, 然後讀取伺服器端的響應資源。

 

實現過程:
1 import urllib22 3 response=urllib2.urlopen(‘http://gs.ccnu.edu.cn/‘)4 html=response.read()5 print html

將返回的html資訊列印出來,這和在網站上右鍵,查看源碼看到的內容是一樣的。瀏覽器通過這些源碼,將要現實的內容渲染出來。

 

除了"http:",URL同樣可以使用"ftp:","file:"等等來替代。

HTTP是基於請求和應答機制的:

用戶端提出請求,服務端提供應答。

 

同樣urllib2,可以通過類比一個請求,然後將這個請求作為參數傳入urlopen中,在讀取返回的內容。

1 import urllib22 3 req=urllib2.Request(‘http://gs.ccnu.edu.cn/‘)4 response2=urllib2.urlopen(req)5 page=response2.read()6 print page

類比ftp請求:

1 req=urllib2.Request("ftp://example.com/")

 

在進行http請求的時候可以做兩件事

1.發送data表單資料

有時候我們在爬取網頁的時候,需要提交一個表單,類比登陸或者註冊的操作。

通常http中通過post操作完成, 而在request時,提交的data表單需要講過urllib中encode編碼成標準的方式。

 1 import urllib   2 import urllib2   3  4 url = ‘http://www.someserver.com/register.cgi‘   5    6 values = {"input1": "SeeKHit",  7           "input2": "123456",  8           "__EVENTTARGET": "btnLogin",  9           "__EVENTARGUMENT": "" }  10 11 data = urllib.urlencode(values) # 編碼工作12 req = urllib2.Request(url, data)  # 發送請求同時傳data表單13 response = urllib2.urlopen(req)  #接受反饋的資訊14 the_page = response.read()  #讀取反饋的內容
2.設定Header到http請求

有時候建立http串連後,伺服器會根據瀏覽器傳過去的User-Agent頭來,返回不同的內容給用戶端。已達到不同的顯示效果。(如安卓上的uc瀏覽器,就有一個設定裝置標識的,如手機版,電腦版,ipad)

Python支援可以自訂的發送過去的User-Agent頭,將自訂的字典作為User-Agent頭作為一個參數,建立一個請求。

以下代碼,講User-Agent偽裝成IE瀏覽器來,進行訪問。

1. 應用程式版本“Mozilla/4.0”表示:你使用Maxthon 2.0 瀏覽器使用 IE8 核心;
2. 版本標識“MSIE 8.0”
3. 平台自身的識別資訊“Windows NT ”表示“作業系統為 Windows”

 1 url = ‘http://www.someserver.com/register.cgi‘ 2 user_agent = ‘Mozilla/4.0 (compatible; MSIE 8.0; Windows NT)‘ 3 headers = { ‘User-Agent‘ : user_agent } 4 values = {"input1": "SeeKHit", 5           "input2": "123456", 6           "__EVENTTARGET": "btnLogin", 7           "__EVENTARGUMENT": "" } 8  9 data = urllib.urlencode(values) # 編碼工作10 req = urllib2.Request(url, data, headers)  # 發送請求,傳data表單,類比User-11 response = urllib2.urlopen(req)  #接受反饋的資訊12 the_page = response.read()  #讀取反饋的內容

 

【Python網路爬蟲二】使用urllib2抓去網頁內容

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.