python使用urllib2抓取網頁

來源:互聯網
上載者:User

標籤:

1、使用python的庫urllib2,用到urlopen和Request方法。

2、方法urlopen原形

urllib2.urlopen(url[, data][, timeout])

其中:

url表示目標網頁地址,可以是字串,也可以是請求對象Request

data表示post方式提交給目標伺服器的參數

timeout表示逾時時間設定

改方法返回一個類似檔案的對象,有geturl()、info()、read()方法其中geturl()返回串連地址,info()返回網頁資訊。

要擷取網頁內容可以使用read()方法,read也可以帶參數,表示讀取內容的大小(位元組)。

例子:


[python] view plaincopy
  1. >>> import urllib2  
  2. >>> socket = urllib2.urlopen("http://www.baidu.com")  
  3. >>> content = socket.read()  
  4. >>> socket.close()  

 

這樣,網頁的內容(content)就爬下來了,但是有些網站禁止爬蟲,如果直接請求會出現以下錯誤:

urllib2.HTTPError: HTTP Error 403: Forbidden

解決方案是可以在請求加上頭資訊,偽裝成瀏覽器的訪問行為,需要用到Request方法:

3、方法Request原型

urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])

其中:

url表示目標網頁地址,可以是字串,也可以是請求對象Request

data表示post方式提交給目標伺服器的參數

headers表示使用者標識,是一個字典類型的資料,有些不允許指令碼的抓取,所以需要使用者代理程式,像Firefox瀏覽器的代理就是類似:Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11 瀏覽器的標準UA格式為:瀏覽器標識 (作業系統標識; 加密等級標識; 瀏覽器語言) 渲染引擎標識 版本資訊 ,headers預設是Python-urllib/2.6

origin_req_host表示請求方的主機網域名稱或者ip地址

 

看一個例子:

[python] view plaincopy
  1. >>> headers = {‘User-Agent‘:‘Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11‘}  
  2. >>> req = urllib2.Request(url="http://blog.csdn.net/deqingguo",headers=headers)  
  3. >>> socket = urllib2.urlopen(req)  
  4. >>> content = socket.read()  
  5. >>> socket.close()  

 列子2:

 import urllib2 as ulurl = ‘http://www.dd.com/products?selected.classification=Primary+antibodies&selected.researchAreas=Metabolism--Types+of+disease--Cancer‘headers = {‘User-Agent‘:‘Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11‘}  req = ul.Request(url,headers=headers)  f = ul.urlopen( req )content = f.read();print f.getcode();

 

[python] view plaincopy
    1. <pre></pre>  
    2. <p></p>  
    3. <pre></pre> 

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.