中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中opener()有什么用

發布時間:2020-09-08 13:47:06 來源:億速云 閱讀:523 作者:小新 欄目:編程語言

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

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

Python中opener()有什么用

具體步驟:

(1)使用相關的 Handler處理器 來創建特定功能的處理器對象;

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

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

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

# 導入urllib 庫
import urllib.request

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

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

from urllib import request

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

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

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

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

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

# 獲取服務器響應內容
html = response.read().decode("utf-8")
 
# 打印字符串
print(html)

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

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

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

Python中opener()有什么用

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

代碼如下:

from urllib import request

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

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

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

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

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

# 獲取服務器響應內容
html = response.read().decode("utf-8")

# 打印字符串
print(html)

輸出結果如下:

Python中opener()有什么用

可以看出在響應結果的時候會為我們打印輸出一些請求信息。

感謝你能夠認真閱讀完這篇文章,希望小編分享Python中opener()有什么用內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

基隆市| 荔波县| 宜州市| 霍林郭勒市| 临湘市| 桃江县| 衢州市| 尖扎县| 舞阳县| 旅游| 芜湖县| 云林县| 南靖县| 独山县| 赤城县| 闽清县| 岳阳县| 南川市| 宾川县| 万全县| 石门县| 河源市| 电白县| 中山市| 内乡县| 潜江市| 汪清县| 长治县| 天峻县| 原阳县| 北宁市| 化隆| 墨竹工卡县| 彩票| 平塘县| 全椒县| 灵丘县| 库尔勒市| 织金县| 仪征市| 长沙县|