日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

requests模块的入门使用

發(fā)布時(shí)間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 requests模块的入门使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
學(xué)習(xí)目標(biāo):
  • 了解 requests模塊的介紹
  • 掌握 requests的基本使用
  • 掌握 response常見的屬性
  • 掌握 requests.text和content的區(qū)別
  • 掌握 解決網(wǎng)頁的解碼問題
  • 掌握 requests模塊發(fā)送帶headers的請求
  • 掌握 requests模塊發(fā)送帶參數(shù)的get請求

  • 1 為什么要重點(diǎn)學(xué)習(xí)requests模塊,而不是urllib

    • requests的底層實(shí)現(xiàn)就是urllib
    • requests在python2 和python3中通用,方法完全一樣
    • requests簡單易用
    • Requests能夠自動(dòng)幫助我們解壓(gzip壓縮的等)響應(yīng)內(nèi)容

    2 requests的作用

    作用:發(fā)送網(wǎng)絡(luò)請求,返回響應(yīng)數(shù)據(jù)

    中文文檔 :?http://docs.python-requests.org/zh_CN/latest/index.html

    通過觀察文檔來學(xué)習(xí):如何使用requests來發(fā)送網(wǎng)絡(luò)請求

    3 requests模塊發(fā)送簡單的get請求、獲取響應(yīng)

    需求:通過requests向百度首頁發(fā)送請求,獲取百度首頁的數(shù)據(jù)

    import requests # 目標(biāo)url url = 'https://www.baidu.com' # 向目標(biāo)url發(fā)送get請求 response = requests.get(url)# 打印響應(yīng)內(nèi)容 print(response.text)
    response的常用屬性:
    • response.text?響應(yīng)體 str類型
    • respones.content?響應(yīng)體 bytes類型
    • response.status_code?響應(yīng)狀態(tài)碼
    • response.request.headers?響應(yīng)對(duì)應(yīng)的請求頭
    • response.headers?響應(yīng)頭
    • response.request.cookies?響應(yīng)對(duì)應(yīng)請求的cookie
    • response.cookies?響應(yīng)的cookie(經(jīng)過了set-cookie動(dòng)作)
    思考:text是response的屬性還是方法呢?
    • 一般來說名詞,往往都是對(duì)象的屬性,對(duì)應(yīng)的動(dòng)詞是對(duì)象的方法
    3.1 response.text 和response.content的區(qū)別
    • response.text

      • 類型:str
      • 解碼類型: requests模塊自動(dòng)根據(jù)HTTP 頭部對(duì)響應(yīng)的編碼作出有根據(jù)的推測,推測的文本編碼
      • 如何修改編碼方式:response.encoding=”gbk”
    • response.content

      • 類型:bytes
      • 解碼類型: 沒有指定
      • 如何修改編碼方式:response.content.deocde(“utf8”)

    獲取網(wǎng)頁源碼的通用方式:

  • response.content.decode()
  • response.content.decode("GBK")
  • response.text
  • 以上三種方法從前往后嘗試,能夠100%的解決所有網(wǎng)頁解碼的問題

    所以:更推薦使用response.content.deocde()的方式獲取響應(yīng)的html頁面

    3.2 練習(xí):把網(wǎng)絡(luò)上的圖片保存到本地

    我們來把www.baidu.com的圖片保存到本地

    思考:
    • 以什么方式打開文件
    • 保存什么格式的內(nèi)容

    分析:

    • 圖片的url:?https://www.baidu.com/img/bd_logo1.png
    • 利用requests模塊發(fā)送請求獲取響應(yīng)
    • 以2進(jìn)制寫入的方式打開文件,并將response響應(yīng)的二進(jìn)制內(nèi)容寫入
    import requests# 圖片的url url = 'https://www.baidu.com/img/bd_logo1.png' # 響應(yīng)本身就是一個(gè)圖片,并且是二進(jìn)制類型 response = requests.get(url) # print(response.content)# 以二進(jìn)制+寫入的方式打開文件 with open('baidu.png', 'wb') as f: # 寫入response.content bytes二進(jìn)制類型f.write(response.content)

    4 發(fā)送帶header的請求

    我們先寫一個(gè)獲取百度首頁的代碼

    import requestsurl = 'https://www.baidu.com'response = requests.get(url)print(response.content)# 打印響應(yīng)對(duì)應(yīng)請求的請求頭信息 print(response.request.headers)
    4.1 思考

    對(duì)比瀏覽器上百度首頁的網(wǎng)頁源碼和代碼中的百度首頁的源碼,有什么不同?

    代碼中的百度首頁的源碼非常少,為什么?

    4.2 為什么請求需要帶上header?

    模擬瀏覽器,欺騙服務(wù)器,獲取和瀏覽器一致的內(nèi)容

    4.3 header的形式:字典

    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

    4.4 用法

    requests.get(url, headers=headers)

    4.5 完整的代碼
    import requestsurl = 'https://www.baidu.com'headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}# 在請求頭中帶上User-Agent,模擬瀏覽器發(fā)送請求 response = requests.get(url, headers=headers) # print(response.content)# 打印請求頭信息 print(response.request.headers)

    5 發(fā)送帶參數(shù)的請求

    我們在使用百度搜索的時(shí)候經(jīng)常發(fā)現(xiàn)url地址中會(huì)有一個(gè)??,那么該問號(hào)后邊的就是請求參數(shù),又叫做查詢字符串

    5.1 什么叫做請求參數(shù):

    例1:?http://www.webkaka.com/tutorial/server/2015/021013/

    例2:https://www.baidu.com/s?wd=python&a=c

    例1中沒有請求參數(shù)!例2中?后邊的就是請求參數(shù)

    5.2 請求參數(shù)的形式:字典

    kw = {'wd':'長城'}

    5.3 請求參數(shù)的用法

    requests.get(url,params=kw)

    5.4 關(guān)于參數(shù)的注意點(diǎn)

    在url地址中, 很多參數(shù)是沒有用的,比如百度搜索的url地址,其中參數(shù)只有一個(gè)字段有用,其他的都可以刪除 如何確定那些請求參數(shù)有用或者沒用:挨個(gè)嘗試! 對(duì)應(yīng)的,在后續(xù)的爬蟲中,越到很多參數(shù)的url地址,都可以嘗試刪除參數(shù)

    5.5 兩種方式:發(fā)送帶參數(shù)的請求

    5.5.1 對(duì)https://www.baidu.com/s?wd=python發(fā)起請求可以使用requests.get(url, params=kw)的方式
    # 方式一:利用params參數(shù)發(fā)送帶參數(shù)的請求 import requestsheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}# 這是目標(biāo)url # url = 'https://www.baidu.com/s?wd=python' # 最后有沒有問號(hào)結(jié)果都一樣 url = 'https://www.baidu.com/s?' # 請求參數(shù)是一個(gè)字典 即wd=python kw = {'wd': 'python'} # 帶上請求參數(shù)發(fā)起請求,獲取響應(yīng) response = requests.get(url, headers=headers, params=kw) # 當(dāng)有多個(gè)請求參數(shù)時(shí),requests接收的params參數(shù)為多個(gè)鍵值對(duì)的字典,比如 '?wd=python&a=c'-->{'wd': 'python', 'a': 'c'}print(response.content)
    5.5.2 也可以直接對(duì)https://www.baidu.com/s?wd=python完整的url直接發(fā)送請求,不使用params參數(shù)
    # 方式二:直接發(fā)送帶參數(shù)的url的請求 import requestsheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}url = 'https://www.baidu.com/s?wd=python'# kw = {'wd': 'python'}# url中包含了請求參數(shù),所以此時(shí)無需params response = requests.get(url, headers=headers)

    6 作業(yè)

    1.獲取新浪首頁,查看response.text 和response.content.decode()的區(qū)別

    2.實(shí)現(xiàn)任意貼吧的爬蟲,保存網(wǎng)頁到本地


    小結(jié)

  • requests模塊的介紹:能夠幫助我們發(fā)起請求獲取響應(yīng)
  • requests的基本使用:requests.get(url)
  • 以及response常見的屬性:
    • response.text?響應(yīng)體 str類型
    • respones.content?響應(yīng)體 bytes類型
    • response.status_code?響應(yīng)狀態(tài)碼
    • response.request.headers?響應(yīng)對(duì)應(yīng)的請求頭
    • response.headers?響應(yīng)頭
    • response.request._cookies?響應(yīng)對(duì)應(yīng)請求的cookie
    • response.cookies?響應(yīng)的cookie(經(jīng)過了set-cookie動(dòng)作)
  • 掌握 requests.text和content的區(qū)別:text返回str類型,content返回bytes類型
  • 掌握 解決網(wǎng)頁的解碼問題:
    • response.content.decode()
    • response.content.decode("GBK")
    • response.text
  • 掌握 requests模塊發(fā)送帶headers的請求:requests.get(url, headers={})
  • 掌握 requests模塊發(fā)送帶參數(shù)的get請求:requests.get(url, params={})
  • 轉(zhuǎn)載于:https://www.cnblogs.com/zc2018/p/9464299.html

    與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的requests模块的入门使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。