最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python技能樹共建之python?urllib?模塊

 更新時間:2022年05月22日 16:07:05   作者:夢想橡皮擦  
這篇文章介紹了Python技能樹共建之python?urllib?模塊,urllib模塊是?Python?標準庫,更多相關介紹需要的小伙伴可以參考下面文章的詳細內容

一、Python urllib 模塊是什么

urllib 模塊是 Python 標準庫,其價值在于抓取網絡上的 URL 資源,入門爬蟲時必學的一個模塊。

不過更多的爬蟲工程師上手學習的模塊已經更換為 requests 了。

在 Python3 中 urllib 模塊包括如下內容。

  • urllib.request:請求模塊,用于打開和讀取 URL;
  • urllib.error:異常處理模塊,捕獲 urllib.error 拋出異常;
  • urllib.parse:URL 解析,爬蟲程序中用于處理 URL 地址;
  • urllib.robotparser:解析 robots.txt 文件,判斷目標站點哪些內容可爬,哪些不可以爬,但是用的很少。

二、使用方法

上手案例

打開一個測試站點,然后返回服務器響應內容。

from urllib.request import urlopen
with urlopen('https://www.example.net') as html:
    page = html.read()
print(page)

上述代碼用到了 urllib.requests 模塊,其內部定義了打開 URL 的函數,授權驗證的方法,重定向,cookie 操作等方法。

代碼中用到的 urlopen() 函數,就是打開一個 URL,該函數的語法格式如下所示:

urllib.request.urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
            *, cafile=None, capath=None, cadefault=False, context=None)

參數描述如下所示:

  • url:請求地址;
  • data:發(fā)送到服務器的其他數據對象,默認為 None;
  • timeout:超時時間;
  • cafile 和 capath:cafile 為 CA 證書, capath 為 CA 證書的路徑,使用 HTTPS 需要用到;
  • context:ssl.SSLContext 類型,用來指定 SSL 設置。

調用該對象的 read() 方法,可以讀取到整個網頁數據。

其余的函數與文件讀取類似,分別是 readline(),readlines()

還可以調用對象的 getcode() 方法,獲取網頁狀態(tài)碼。

print(html.getcode()) # 返回 200

urlopen() 返回對象的更多方法

使用 urlopen() 可以得到一個 HTTPResposne 類型的對象,它包括上文提及的 read() 方法,getcode() 方法,除此之外,還有如下內容可以使用。

  • getheaders():獲取請求頭內容;
  • getheader(name):獲取指定請求頭;
  • msg:信息屬性;
  • version:版本屬性;
  • status:狀態(tài)屬性。

urllib.Request() 類

URL 請求抽象類,使用它可以擴展更多的請求配置,其構造方法如下所示:

def __init__(self, url, data=None, headers={},
                 origin_req_host=None, unverifiable=False,
                 method=None)

其參數說明如下所示:

  • url:請求地址,必選參數;
  • data:請求參數,必須為 bytes 類型數據,可以使用 urlencode() 進行編碼;
  • headers:字典類型,請求頭設置;
  • origin_req_host:請求的主機地址,IP 或域名;
  • method:請求方法。

測試代碼如下所示:

from urllib import request, parse
url = 'http://httpbin.org/post'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 你的UA'
}
dict = {
    'name': 'xiangpica'
}
# 轉換數據類型
data = bytes(parse.urlencode(dict), encoding='utf8')
# 實例化對象
req = request.Request(url=url, data=data, headers=headers, method='POST')
# 添加請求頭
req.add_header('HOST', 'httpbin.org')
# 發(fā)送數據
response = request.urlopen(req)
print(response.read().decode('utf-8'))

urllib.parse

該模塊主要用于解析 URL,函數原型如下所示:

urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True)

參數說明如下:

  • urlstring:URL 地址;
  • scheme:協(xié)議類型,可用的包括 file、ftp、gopher、hdl、http、https、imap、mailto、 mms、news、nntp、prospero、rsync、rtsp、rtspu、sftp、 sip、sips、snews、svn、svn+ssh、telnet……;
  • allow_fragments:是否忽略 URL 中的 fragment 部分。

標準的 URL 格式如下:

scheme://netloc/path;params?query#fragment

說明如下所示:

  • scheme:URL 協(xié)議;
  • netloc:域名和端口;
  • path:路徑;
  • params:最后一個路徑元素參數,不常用;
  • query:查詢字符串;
  • fragment:片段標志。
from urllib.parse import urlparse
result = urlparse('http://www.example.com/index.html;info?id=10086#comment')
print(type(result), result)
print(result.scheme, result[0])
print(result.netloc, result[1])
print(result.path, result[2])
print(result.params, result[3])
print(result.query, result[4])
print(result.fragment, result[5])

運行結果如下所示:

<class 'urllib.parse.ParseResult'> ParseResult(scheme='http', netloc='www.example.com', path='/index.html', params='info', query='id=10086', fragment='comment')
http http
www.example.com www.example.com
/index.html /index.html
info info
id=10086 id=10086
comment comment

urlparse() 返回結果是一個 ParseResult 類型的對象。

其余內容

  • urlunparse() 方法與上述方法邏輯相反;
  • urljoin() 方法用于拼接鏈接;
  • urlencode():格式化請求參數;
  • quote():將內容轉換為 URL 編碼格式,尤其是轉換中文字符;
  • unquote():對 URL 進行解碼。

三、提高場景

error 模塊

在 urllib 中,error 模塊定義異常,其包含如下類:

  • URLError:OSError 的一個子類,用于處理程序在遇到問題時會引發(fā)此異常;
  • HTTPError:URLError 的一個子類,用于處理特殊 HTTP 錯誤例如作為認證請求的時候

到此這篇關于Python技能樹共建之python urllib 模塊的文章就介紹到這了,更多相關 python urllib 模塊內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python中的單繼承與多繼承實例分析

    Python中的單繼承與多繼承實例分析

    這篇文章主要介紹了Python中的單繼承與多繼承,結合實例詳細分析了Python面向對象程序設計中單繼承與多繼承的概念、原理、實現(xiàn)方法及相關操作注意事項,需要的朋友可以參考下
    2018-05-05
  • Python實現(xiàn)創(chuàng)建詞云的示例詳解

    Python實現(xiàn)創(chuàng)建詞云的示例詳解

    詞云一般是根據輸入的大量詞語生成的,如果某個詞語出現(xiàn)的次數越多,那么相應的大小就會越大,本文將利用wordcloud模塊實現(xiàn)詞云生成,需要的可以參考下
    2023-10-10
  • python調用OpenCV實現(xiàn)人臉識別功能

    python調用OpenCV實現(xiàn)人臉識別功能

    這篇文章主要為大家詳細介紹了python調用OpenCV實現(xiàn)人臉識別功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 使用Python腳本實現(xiàn)批量網站存活檢測遇到問題及解決方法

    使用Python腳本實現(xiàn)批量網站存活檢測遇到問題及解決方法

    本文是小編自己編寫的一個使用python實現(xiàn)批量網站存活檢測。在項目測試中非常有用。本文給大家分享了遇到的問題及解決方案,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-10-10
  • 使用PyCharm批量爬取小說的完整代碼

    使用PyCharm批量爬取小說的完整代碼

    這篇文章主要介紹了使用PyCharm批量爬取小說,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Python字符集和字符編碼詳情

    Python字符集和字符編碼詳情

    這篇文章主要介紹了Python字符集和字符編碼詳情,Python中的字符串是通過unicode來表示的,在底層對應的結構體是PyUnicodeObject,但是具體為什么呢?帶著疑問一起學習下面文章內容吧
    2022-05-05
  • Python如何實現(xiàn)在字符串里嵌入雙引號或者單引號

    Python如何實現(xiàn)在字符串里嵌入雙引號或者單引號

    今天小編就為大家分享一篇Python如何實現(xiàn)在字符串里嵌入雙引號或者單引號,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python實現(xiàn)騰訊滑塊驗證碼識別

    python實現(xiàn)騰訊滑塊驗證碼識別

    這篇文章主要介紹了python如何實現(xiàn)騰訊滑塊驗證碼識別,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-04-04
  • flask入門之表單的實現(xiàn)

    flask入門之表單的實現(xiàn)

    這篇文章主要介紹了flask入門之表單的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • python線程池ThreadPoolExecutor,傳單個參數和多個參數方式

    python線程池ThreadPoolExecutor,傳單個參數和多個參數方式

    這篇文章主要介紹了python線程池ThreadPoolExecutor,傳單個參數和多個參數方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論

化隆| 宕昌县| 仁怀市| 佳木斯市| 保德县| 准格尔旗| 金溪县| 枣庄市| 苍山县| 烟台市| 图木舒克市| 慈溪市| 吉木乃县| 紫云| 清水县| 黄梅县| 泰顺县| 嘉定区| 屏边| 嵊泗县| 武胜县| 阳新县| 濮阳县| 潞城市| 平定县| 全椒县| 灵山县| 大田县| 永定县| 象州县| 灵璧县| 湖口县| 花垣县| 镇坪县| 信丰县| 东至县| 宁国市| 东平县| 南郑县| 图木舒克市| 寻乌县|