日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

01 Python爬蟲之Requests庫入門

系統(tǒng) 2311 0

目錄

  • Requests庫
    • Requests庫的7個主要方法
      • Requests庫的get()方法
      • Requests庫的head()方法
  • Response對象的屬性
  • 理解Requests庫的異常
    • 爬取網(wǎng)頁的通用代碼框架
  • HTTP協(xié)議
    • 協(xié)議對資源的操作
    • 理解PATCH和PUT的區(qū)別
  • HTTP協(xié)議與Requests庫
  • Requests庫主要方法解析

Requests庫

Requests庫的7個主要方法

方法 說明
requests.request() 構(gòu)造一個請求,支撐以下各方法的基礎(chǔ)方法
requests.get() 獲取HTML網(wǎng)頁的主要方法,對應(yīng)于HTTP的GET
requests.head() 獲取HTML網(wǎng)頁頭信息的方法,對應(yīng)于HTTP的HEAD
requests.post() 向HTML網(wǎng)頁提交POST請求的方法,對應(yīng)于HTTP的POST
requests.put() 向HTML網(wǎng)頁提交PUT請求的方法,對應(yīng)于HTTP的PUT
requests.patch() 向HTML網(wǎng)頁提交局部修改請求,對應(yīng)于HTTP的PATCH
requests.delete() 向HTML頁面提交刪除請求,對應(yīng)于HTTP的DELETE

Requests庫的get()方法

  • r=requests.get(url)

    r: 返回一個包含服務(wù)器資源的 Response 對象

    get: 構(gòu)造一個向服務(wù)器請求資源的 Request 對象

          
            import requests # 導入 requests庫
r = requests.get("https://www.baidu.com")   # 使用get請求進行進行訪問,得到response響應(yīng)r
print(r.text)   # 打印response響應(yīng)的文本內(nèi)容
          
        

Requests庫的head()方法

  • r=requests.head(url)

    r: 返回一個包含服務(wù)器資源的 Response 對象

    head: 構(gòu)造一個向服務(wù)器獲取HTML網(wǎng)頁頭信息的方法

          
            # head方法
r = requests.head("https://www.baidu.com")  # 使用head請求進行訪問
print(r.headers)    # 通過response響應(yīng)中的headers打印 html中的頭部信息
print(r.text)       # 通過text響應(yīng)的文本內(nèi)容無效
          
        

Response對象的屬性

Response對象包含服務(wù)器返回的所有信息,也包含請求的Request信息

屬性 說明
r.status_code HTTP請求的返回狀態(tài),200表示連接成功,404表示失敗
r.text HTTP響應(yīng)內(nèi)容的字符串形式,即url對于的內(nèi)容
r.encoding 從HTTP header中猜測的響應(yīng)內(nèi)容編碼方式
r.apparent_encoding 從內(nèi)容中分析出的響應(yīng)內(nèi)容編碼方式(備選編碼方式)
r.content HTTP響應(yīng)內(nèi)容的二進制形式

理解Requests庫的異常

異常 說明
requests.ConnectionError 網(wǎng)絡(luò)連接錯誤異常,如DNS查詢失敗、拒絕連接等
requests.HTTPError HTTP錯誤異常
requests.URLRequired URL缺失異常
requests.TooManyRedirects 超過最大重定向次數(shù),產(chǎn)生重定向異常
requests.ConnectTimeout 連接遠程服務(wù)器超時異常
requests.Timeout 請求URL超時,產(chǎn)生超時異常
r.raise_for_status() 如果不是200,產(chǎn)生異常requests.HTTPError

爬取網(wǎng)頁的通用代碼框架

          
            import requests

def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()    # 如果狀態(tài)不是200,引發(fā)HTTPError異常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "產(chǎn)生異常"
          
        

HTTP協(xié)議

HTTP ,Hypertext Transfer Protocol,超文本傳輸協(xié)議

HTTP是一個基于“請求與響應(yīng)”模式的、無狀態(tài)的應(yīng)用層協(xié)議

HTTP協(xié)議采用URL作為定位網(wǎng)絡(luò)資源的標識,URL格式如下:

? http://host[:port][path]

host: 合法的Internet主機域名或IP地址

port: 端口號,缺省端口為80

path: 請求資源的路徑

協(xié)議對資源的操作

方法 說明
GET 請求獲取URL位置的資源
HEAD 請求獲取URL位置的資源的響應(yīng)消息報告,即獲得該資源的頭部信息
POST 請求向URL位置的資源后附加新的數(shù)據(jù)
PUT 請求向URL位置存儲一個資源,覆蓋原URL位置的資源
PATCH 請求局部更新URL位置的資源,即改變該處資源的部分內(nèi)容
DELETE 請求刪除URL位置存儲的資源

01 Python爬蟲之Requests庫入門_第1張圖片

理解PATCH和PUT的區(qū)別

假設(shè)URL位置有一組數(shù)據(jù)UserInfo,包括UserID、UserName等20個字段
需求: 用戶修改了UserName,其他不變

  • 采用PATCH,僅向URL提交UserInfo的局部更新請求
  • 采用PUT,必須將所有20個字段一并提交到URL,未提交字段被刪除

PATCH的最主要好處 :節(jié)省網(wǎng)絡(luò)帶寬

HTTP協(xié)議與Requests庫

HTTP協(xié)議方法 Requests庫方法 功能一致性
GET requests.get() 一致
HEAD requests.head() 一致
POST requests.post() 一致
PUT requests.put() 一致
PATCH requests.patch() 一致
DELETE requests.delete() 一致

Requests庫主要方法解析

? Requests庫中有7個主要方法。其中,Requests庫中最常使用的就是get和head方法

  • 1. requests.request(method, url, **kwargs)

    method: 請求方式,對應(yīng)get/put/post等7中

    url: 擬獲取頁面的url鏈接

    * *kwargs :控制訪問的參數(shù), 13 個。均為可選項

    1. params:字典或字節(jié)序列,作為參數(shù)增加到url中
    2. data:字典、字節(jié)序列或文件對象,作為Request的內(nèi)容
    3. json:JSON格式的數(shù)據(jù),作為Request的內(nèi)容
    4. headers:字典,HTTP定制頭
    5. cookies:字典或CookieJar,Request中的cookie
    6. auth:元組,支持HTTP認證功能
    7. files:字典類型,傳輸文件
    8. timeout:設(shè)定超時時間,秒為單位
    9. proxies:字典類型,設(shè)定訪問代理服務(wù)器,可以增加登錄認證
    10. allow_redirects:True/False,默認為True,重定向開關(guān)
    11. stream:True/False,默認為True,獲取內(nèi)容立即下載開關(guān)
    12. verify:True/False,默認為True,認證SSL證書開關(guān)
    13. cert:本地SSL證書路徑
  • 2. requests.get(url, params=None, **kwargs)

    url: 擬獲取頁面的url鏈接

    params: url中的額外參數(shù),字典或字節(jié)流格式,可選

    * *kwargs :控制訪問的參數(shù), 12 個。均為可選項(與上面內(nèi)容一致,不再贅述)

  • 3. requests.head(url, **kwargs)

    url: 擬獲取頁面的url鏈接

    * *kwargs :控制訪問的參數(shù), 13 個。均為可選項(與上面內(nèi)容一致,不再贅述)

  • 4. requests.post(url, data=None, json=None, **kwargs)

    url: 擬更新頁面的url鏈接

    data: 字典、字節(jié)序列或文件,Request的內(nèi)容

    json: JSON格式的數(shù)據(jù),作為Request的內(nèi)容

    * *kwargs :控制訪問的參數(shù), 11 個。均為可選項(與上面內(nèi)容一致,不再贅述)

  • 5. requests.put(url, data=None, **kwargs)

    url: 擬更新頁面的url鏈接

    data: 字典、字節(jié)序列或文件對象,Request的內(nèi)容

    * *kwargs :控制訪問的參數(shù), 12 個。均為可選項(與上面內(nèi)容一致,不再贅述)

  • 6. requests.patch(url, data=None, **kwargs)

    url: 擬更新頁面的url鏈接

    data: 字典、字節(jié)序列或文件對象,Request的內(nèi)容

    * *kwargs :控制訪問的參數(shù), 12 個。均為可選項(與上面內(nèi)容一致,不再贅述)

  • 7. requests.delete(url, **kwargs)

    url: 擬刪除頁面的url鏈接

    * *kwargs :控制訪問的參數(shù), 13 個。均為可選項(與上面內(nèi)容一致,不再贅述)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 板桥市| 淄博市| 叙永县| 穆棱市| 聂荣县| 清流县| 浮山县| 西丰县| 依安县| 万源市| 阳西县| 阿巴嘎旗| 两当县| SHOW| 潮州市| 五寨县| 辽源市| 沙河市| 龙山县| 绥芬河市| 科尔| 青海省| 桦甸市| 河池市| 博兴县| 东港市| 阳朔县| 金阳县| 普洱| 丹寨县| 青阳县| 宕昌县| 扬中市| 维西| 郓城县| 潜江市| 翼城县| 堆龙德庆县| 阳谷县| 文昌市| 玉环县|