Python urllib2執行過程原理解析

2022-09-26 12:03:22 字數 2205 閱讀 7726

1.urlopen函式

urllib2.urlopen(url[, www.cppcns.comdata[, timeout[, cafile[, capath[, cadefault[, context]]]]])

注:url表示目標網頁位址,可以是字串,也可以是請求物件request

req= urllib2.request(url, data,headers) response = urllib2.urlopen(req,timeout=3)

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

data = urllib.urlencode(data)

import urllib,qxfxcpmcurllib2www.cppcns.com

action_url=""#用於測試post的**,返回提交的資料

values=

data=urllib.urlencode(values)#對表單資料編碼

rqst=urllib2.request(action_url,data)

response=urllib2.urlopen(rqst)#模擬提交表單資料到url並獲得響應

timeout表示超時時間設定。

返回值

這個函式可以像urllib.urlopen()那樣以url做引數。也能以request例項為引數,即用乙個request物件(下文構造方法)來對映你提出的http請求,在它最簡單的使用形式中你將用你要請求的位址建立乙個request物件,這個request物件中可以設定傳輸資料、headers等。通過呼叫urlopen並傳入request物件,將返回乙個file-like物件。urllib2還提供了介面來處理一般情況,例如:基礎驗證,cookies,**和其他,它們通過handlers和openers的物件實現。

2、request函式

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

用於構造request物件,可以傳遞data資料,新增請求頭(headers)等,構造好後作為的引數。

注:url表示目標網頁位址,可以是字串,也可以是請求物件request

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

headers表示使用者標識,是乙個字典型別的資料,有些不允許指令碼的抓取,所以需要使用者**,像火狐瀏覽器的**就是類似:

mozilla/5.0 (x11; u; linux i686)gecko/20071127 firefox/2.0.0.11

瀏覽器的標準ua格式為:瀏覽器標識 (作業系統標識; 加密等級標識; 瀏覽器語言) 渲染引擎標識 版本資訊 ,headers預設是

python-urllib/2.6

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

headers =

import urllib

import urllib2

url = ''

user_agent = 'mozilla/4.0 (compatible; msie 5.5; windows nt)'

h =

req = urllib2.request(url,headers=h)

response = urllib2.urlopen(req)

print response.read()

3、build_opener()

build_opener([handler1 [ handler2, ... ]])

urllib2.urlopen()函式不支援驗證、cookie或者其它http高階功能。要支援這些功能,必須使用build_opener()函式建立自定義opener物件。

引數handler是handler例項,常用的有httpbasicauthhandler、httpcookieprocessor、proxyhandler等。

build_opener ()返回的物件具有open()方法,與urlopen()函式的功能相同。

如果要修改http報頭,可以用:

urllib2

opener = urllib2.build_opener()

opener.addheaders = [('user-agent', 'mozilla/5.0')]

opener.open('')

本文標題: python urllib2執行過程原理解析

本文位址:

Python urllib2使用總結

import urllib2 response urllib2.urlopen html response.read 這個過程就是基於簡單的請求 響應的模型 response urllib2.urlopen 實際上可以看作兩個步驟 1 我們向指定網域名稱傳送請求 request urllib2.re...

python urllib2查詢資料

最近為了更好的查詢老王python的外鏈,所以準備寫乙個python urllib2 查詢指令碼來查詢,一般查詢外鏈比較準確的工具還是yahoo的外鏈工具,但是有點不方便的就是,yahoo查出的外鏈要一頁一頁的翻,好累而且不好方便統計,我是想把 的外鏈全部讀取到檔案裡,這樣比較好在本地來進行統計。廢...

Python urllib2產生殭屍程序

最近發現,python 會產生很多殭屍程序,之前未發現,自從使用urllib2模組發http請求之後,便產生了大量殭屍程序,確定是由於urllib2產生,原始 如下 req urllib2.request url urllib2.urlopen req 最開始,想當然的任務,http請求不是長連線,...