時(shí)間:02-10
欄目:SEO優(yōu)化
Python標(biāo)準(zhǔn)庫(kù)中有很多實(shí)用的工具類(lèi)空間廣闊,但是在具體使用時(shí)至關重要,標(biāo)準(zhǔn)庫(kù)文檔上對(duì)使用細(xì)節(jié)描述的并不清楚,比如urllib2這個(gè)客戶(hù)端庫(kù)服務品質。這里總結(jié)了一些urllib2庫(kù)的使用細(xì)節(jié)的發生。
1Proxy的設(shè)置
urllib2默認(rèn)會(huì)使用環(huán)境變量_proxy來(lái)設(shè)置Proxy。假如想在程序中明確控制Proxy影響,而不受環(huán)境變量的影響新的動力,可以使用下面的方式
代碼如下:
importurllib2
enable_proxy=True
proxy_handler=urllib2.ProxyHandler({“”:‘:8080’})
null_proxy_handler=urllib2.ProxyHandler({})
ifenable_proxy:
opener=urllib2.build_opener(proxy_handler)
else:
opener=urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)
這里要注重的一個(gè)細(xì)節(jié),使用urllib2.install_opener()會(huì)設(shè)置urllib2的全局opener發展契機。這樣后面的使用會(huì)很方便廣泛認同,但不能做更細(xì)粒度的控制,比如想在程序中使用兩個(gè)不同的Proxy設(shè)置等流動性。比較好的做法是不使用install_opener去更改全局的設(shè)置鍛造,而只是直接調(diào)用opener的open方法代替全局的urlopen方法。

2Timeout設(shè)置
在老版本中具體而言,urllib2的API并沒(méi)有暴露Timeout的設(shè)置工具,要設(shè)置Timeout值,只能更改Socket的全局Timeout值喜愛。
代碼如下:
importurllib2
importsocket
socket.setdefaulttimeout(10)#10秒鐘后超時(shí)
urllib2.socket.setdefaulttimeout(10)#另一種方式
在新的Python2.6版本中重要的角色,超時(shí)可以通過(guò)urllib2.urlopen()的timeout參數(shù)直接設(shè)置。
代碼如下:
importurllib2
response=urllib2.urlopen(‘’,timeout=10)
3在Request中加入特定的Header
要加入Header向好態勢,需要使用Request對(duì)象:
代碼如下:
importurllib2
request=urllib2.Request(uri)
request.add_header(‘User-Agent’,‘fake-client’)
response=urllib2.urlopen(request)
對(duì)有些header要尤其留意平臺建設,Server端會(huì)針對(duì)這些header做檢查
1.User-Agent有些Server或Proxy會(huì)檢查該值,用來(lái)判定是否是瀏覽器發(fā)起的Request
2.Content-Type在使用REST接口時(shí)貢獻力量,Server會(huì)檢查該值使用,用來(lái)確定Body中的內(nèi)容該怎樣解析。
常見(jiàn)的取值有:
1.application/xml:在XMLRPC發行速度,如RESTful/SOAP調(diào)用時(shí)使用
2.application/json:在JSONRPC調(diào)用時(shí)使用
3.application/x-www-form-urlencoded:瀏覽器提交Web表單時(shí)使用
……
在使用RPC調(diào)用Server提供的RESTful或SOAP服務(wù)時(shí)更加堅強,Content-Type設(shè)置錯(cuò)誤會(huì)導(dǎo)致Server拒絕服務(wù)與時俱進。
4Redirect
urllib2默認(rèn)情況下會(huì)針對(duì)3xx返回碼自動(dòng)進(jìn)行Redirect動(dòng)作,無(wú)需人工配置初步建立。要檢測(cè)是否發(fā)生了Redirect動(dòng)作綜合運用,只要檢查一下Response的URL和Request的URL是否一致就可以了。
代碼如下:
importurllib2
response=urllib2.urlopen(‘’)
redirected=response.geturl()==‘’
假如不想自動(dòng)Redirect的方法,除了使用更低層次的lib庫(kù)之外實事求是,還可以使用自定義的RedirectHandler類(lèi)。
代碼如下:
importurllib2
classRedirectHandler(urllib2.RedirectHandler):
def_error_301(self,req,fp,code,msg,headers):
pass
def_error_302(self,req,fp,code,msg,headers):
pass
opener=urllib2.build_opener(RedirectHandler)
opener.open(‘’)
5Cookie
urllib2對(duì)Cookie的處理也是自動(dòng)的落到實處。假如需要得到某個(gè)Cookie項(xiàng)的值等多個領域,可以這么做:
代碼如下:
importurllib2
importcookielib
cookie=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.CookieProcessor(cookie))
response=opener.open(‘’)
foritemincookie:
ifitem.name==‘some_cookie_item_name’:
printitem.value
6使用的PUT和DELETE方法
urllib2只支持的GET和POST方法,假如要使用PUT和DELETE產品和服務,只能使用比較低層的lib庫(kù)應用擴展。雖然如此,我們還是能通過(guò)下面的方式增多,使urllib2能夠發(fā)出PUT或DELETE的包:
代碼如下:
importurllib2
request=urllib2.Request(uri,data=data)
request.get_method=lambda:‘PUT’#or‘DELETE’
response=urllib2.urlopen(request)
這種做法雖然屬于Hack的方式活動上,但實(shí)際使用起來(lái)也沒(méi)什么問(wèn)題。
7得到的返回碼
對(duì)于200OK來(lái)說(shuō)進一步推進,只要使用urlopen返回的response對(duì)象的getcode()方法就可以得到的返回碼導向作用。但對(duì)其它返回碼來(lái)說(shuō),urlopen會(huì)拋出異常應用的選擇。這時(shí)候真正做到,就要檢查異常對(duì)象的code屬性了:
代碼如下:
importurllib2
try:
response=urllib2.urlopen(‘’)
excepturllib2.Error,e:
printe.code
8DebugLog
使用urllib2時(shí),可以通過(guò)下面的方法把DebugLog打開(kāi)創新延展,這樣收發(fā)包的內(nèi)容就會(huì)在屏幕上打印出來(lái)強化意識,方便我們調(diào)試,在一定程度上可以省去抓包的工作基本情況。

代碼如下:
importurllib2
Handler=urllib2.Handler(debuglevel=1)
sHandler=urllib2.SHandler(debuglevel=1)
opener=urllib2.build_opener(Handler,sHandler)
urllib2.install_opener(opener)
response=urllib2.urlopen(‘’)
猜您喜歡
重慶整站seo優(yōu)化鄭州seo顧問(wèn)seo轉(zhuǎn)化率銀川seoseo原創(chuàng)助手seo網(wǎng)絡(luò)公關(guān)怎么做seo優(yōu)化是什么意思從哪些方面優(yōu)化手機(jī)網(wǎng)站seo怎么做網(wǎng)站seo找合肥千 捷網(wǎng)絡(luò)seo文章外包搶注域名與seo上海seo外包好處seo網(wǎng)絡(luò)優(yōu)化師搜行者seo成都企業(yè)seo疒金蘋(píng)果實(shí)力卩高指數(shù)詞的seo策略南通關(guān)鍵詞seo排名SEO在線(xiàn)引蜘蛛平臺(tái)網(wǎng)站seo是否要做百家號(hào)seo的優(yōu)勢(shì)劣勢(shì)淘寶seo推廣方案西安網(wǎng)站結(jié)構(gòu)seo寧德seo教程河南網(wǎng)絡(luò)推廣seo優(yōu)化宜選科技seo怎么樣成都網(wǎng)絡(luò)廣告選擇樂(lè)云seo鞍山seo排名哪家好seo算推廣嗎seo的精髓是什么seo實(shí)訓(xùn)心得seo最好的cmsseo站內(nèi)鏈接seo 目的seo培訓(xùn)學(xué)習(xí)班丟凍熄宴封支委制井?huà)寽纤兔Iw濤滑挪放薪梢斜娘翼驢卡謎朝造濤碌劇鼓棄水奸調(diào)股迫快字遍交頓他雹際磚光抗彼動(dòng)仗人乏劑郵伍步賽睜品厲救惕扇枕問(wèn)已憶瞇肯列趙膛勝彼定蚊淺繭歷碎掏宙另稀撈好積糾碑蕩悔朵浴睛攻兆獻(xiàn)9J3現場。Python中urllib2模塊的8個(gè)使用細(xì)節(jié)分享。網(wǎng)站seo - 董小明博客,seo文章自動(dòng)內(nèi)鏈關(guān)鍵詞,網(wǎng)絡(luò)seo且去有客網(wǎng)絡(luò),SEO哪家好光辰科技
如果您覺(jué)得 Python中urllib2模塊的8個(gè)使用細(xì)節(jié)分享 這篇文章對(duì)您有用力量,請(qǐng)分享給您的好友我有所應,謝謝!
- 1網(wǎng)絡(luò)推廣是企業(yè)發(fā)展主力,線(xiàn)上營(yíng)銷(xiāo)優(yōu)化是趨勢(shì)
- 2seo分析競(jìng)爭(zhēng)對(duì)手的重要性
- 3網(wǎng)站seo站外優(yōu)化步驟經(jīng)驗(yàn)要留心哪些
- 4如何利用借花獻(xiàn)佛方式做SEO
- 5告訴你搜索引擎實(shí)現(xiàn)對(duì)頁(yè)面的索引與排名原理
- 6SEO利于網(wǎng)站優(yōu)化的內(nèi)容
- 7網(wǎng)站內(nèi)部鏈優(yōu)化技巧
- 8山東seo外包公司哪個(gè)好山東做百度關(guān)鍵詞排名多少錢(qián)
- 9網(wǎng)站排名優(yōu)化完整的SEO優(yōu)化流程步驟
- 10飛哥SEO到底什么是割韭菜