真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python中opener()有什么用

這篇文章主要介紹了Python中opener()有什么用,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比鐵嶺網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式鐵嶺網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋鐵嶺地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

當(dāng)我們爬取百度首頁的 html時,我們用到的是 urlopen 來打開請求,它是一個特殊的opener(也就是模塊幫我們構(gòu)建好的)。但是基本的 urlopen() 方法不支持代理、cookie等其他的HTTP/HTTPS高級功能,所以我們需要用到 Python 的 opener 來自定義我們的請求內(nèi)容。

Python中opener()有什么用

具體步驟:

(1)使用相關(guān)的 Handler處理器 來創(chuàng)建特定功能的處理器對象;

(2)然后通過 build_opener()方法使用這些處理器對象,創(chuàng)建自定義opener對象;

(3)使用自定義的opener對象,調(diào)用open()方法發(fā)送請求。

我們先來回顧一下使用 urlopen 獲取百度首頁的 html 代碼實(shí)例:

# 導(dǎo)入urllib 庫
import urllib.request

# url 作為Request()方法的參數(shù),構(gòu)造并返回一個Request對象
request = urllib.request.Request("http://www.baidu.com")
# Request對象作為urlopen()方法的參數(shù),發(fā)送給服務(wù)器并接收響應(yīng)
response = urllib.request.urlopen(request)
# 類文件對象支持 文件對象的操作方法,如read()方法讀取文件全部內(nèi)容,返回字符串
html = response.read().decode("utf-8")
# 打印字符串
print(html)

接下來我們看一下使用 opener 的處理方式:

from urllib import request

# 構(gòu)建一個HTTPHandler 處理器對象,支持處理HTTP請求
http_handler = request.HTTPHandler()

# 構(gòu)建一個HTTPSHandler 處理器對象,支持處理HTTPS請求
# http_handler = request.HTTPSHandler()

# 調(diào)用 request.build_opener()方法,創(chuàng)建支持處理HTTP請求的opener對象
opener = request.build_opener(http_handler)

# 構(gòu)建 Request請求
request = request.Request("http://www.baidu.com/")

# 調(diào)用自定義opener對象的open()方法,發(fā)送request請求
response = opener.open(request)

# 獲取服務(wù)器響應(yīng)內(nèi)容
html = response.read().decode("utf-8")
 
# 打印字符串
print(html)

在上面的第一段代碼中,我們是通過直接  import urllib.request   來導(dǎo)入我們需要的包,這樣當(dāng)我們要使用時需要   urllib.request   來使用,第二段代碼我們是通過  from urllib import request  來導(dǎo)入我們需要的包,這樣當(dāng)我們使用時直接  request 來使用就可以了。

第一段代碼在前面的文章中我們已經(jīng)說過了,這里就不多做解釋了。

第二段代碼中,我們使用了 opener 的方法來處理我們的請求,這樣我們就可以對代理,cookie 等做進(jìn)一步的操作,后續(xù)文章會講到。最終結(jié)果如下:

Python中opener()有什么用

在http_handler = request.HTTPHandler()中,我們還可以添加一個  debuglevel=1 參數(shù),會將Debug Log打開,這樣程序在執(zhí)行的時候,會把收包和發(fā)包的報(bào)頭在屏幕上自動打印出來,方便調(diào)試,有時可以省去抓包的工作。

代碼如下:

from urllib import request

# 構(gòu)建一個HTTPHandler 處理器對象,支持處理HTTP請求
http_handler = request.HTTPHandler(debuglevel=1)

# 構(gòu)建一個HTTPHandler 處理器對象,支持處理HTTPS請求
# http_handler = request.HTTPSHandler(debuglevel=1)

# 調(diào)用 request.build_opener()方法,創(chuàng)建支持處理HTTP請求的opener對象
opener = request.build_opener(http_handler)

# 構(gòu)建 Request請求
request = request.Request("http://www.baidu.com/")

# 調(diào)用自定義opener對象的open()方法,發(fā)送request請求
response = opener.open(request)

# 獲取服務(wù)器響應(yīng)內(nèi)容
html = response.read().decode("utf-8")

# 打印字符串
print(html)

輸出結(jié)果如下:

Python中opener()有什么用

可以看出在響應(yīng)結(jié)果的時候會為我們打印輸出一些請求信息。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享Python中opener()有什么用內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!


文章題目:Python中opener()有什么用
URL鏈接:http://weahome.cn/article/gegiph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部