<em id="hh9r9"><nobr id="hh9r9"><nobr id="hh9r9"></nobr></nobr></em>

        <form id="hh9r9"><listing id="hh9r9"><meter id="hh9r9"></meter></listing></form>

                        <address id="hh9r9"></address>

                        葵花寶典教程,一個自學編程平臺

                        葵花寶典教程,一個自學編程平臺

                        Python爬蟲常用庫總結之“Requests”

                        Requests模塊介紹:

                        發送http請求,獲取響應數據

                        requests模塊是一個第三方模塊,需要在你的python(虛擬)環境中額外安裝: 

                        pip/pip3 install requests

                        requests基礎:

                        requests模塊發送get請求


                        • import requests

                        • # 目標url

                        • url = 'https://www.baidu.com'

                        • # 向目標url發送get請求

                        • response = requests.get(url)

                        • # 打印響應內容

                        • print(response.text)


                        Response響應對象:

                        觀察上邊代碼運行結果發現,有好多亂碼;這是因為編解碼使用的字符集不同造成的;我們嘗試使用下邊的辦法來解決中文亂碼問題


                        • import requests

                        • url = 'https://www.baidu.com'

                        • # 向目標url發送get請求

                        • response = requests.get(url)

                        • # 打印響應內容

                        • # print(response.text)

                        • print(response.content.decode()) # 注意這里!


                        1、response.text是requests模塊按照chardet模塊推測出的編碼字符集進行解碼的結果

                        2、網絡傳輸的字符串都是bytes類型的,所以response.text = response.content.decode(‘推測出的編碼字符集’)

                        3、我們可以在網頁源碼中搜索charset,嘗試參考該編碼字符集,注意存在不準確的情況。


                        Response.text 和Response.content的區別:

                        1、Response.text


                        • 類型:str

                        • 解碼類型: requests模塊自動根據HTTP 頭部對響應的編碼作出有根據的推測,推測的文本編碼


                        2、Response.content


                        • 類型:bytes

                        • 解碼類型: 沒有指定



                        解決中文亂碼:

                        通過對response.content進行decode,來解決中文亂碼


                        1、Response.content.decode() 默認utf-8

                        2、Response.content.decode("GBK")

                        3、常見的編碼字符集

                        • utf-8

                        • gbk

                        • gb2312

                        • ascii (讀音:阿斯克碼)

                        • iso-8859-1



                        Response響應對象的其它常用屬性或方法:


                        • #https://beishan.blog.csdn.net/

                        • # 1.2.3-response其它常用屬性

                        • import requests


                        • # 目標url

                        • url = 'https://www.baidu.com'


                        • # 向目標url發送get請求

                        • response = requests.get(url)


                        • # 打印響應內容

                        • # print(response.text)

                        • # print(response.content.decode()) # 注意這里!

                        • print(response.url)# 打印響應的url

                        • print(response.status_code)# 打印響應的狀態碼

                        • print(response.request.headers)# 打印響應對象的請求頭

                        • print(response.headers)# 打印響應頭

                        • print(response.request._cookies)# 打印請求攜帶的cookies

                        • print(response.cookies)# 打印響應中攜帶的cookies



                        Requests實操:

                        requests模塊發送請求

                        發送帶header的請求

                        我們先寫一個獲取百度首頁的代碼



                        • import requests

                        • url = 'http://www.6798111.com'

                        • response = requests.get(url)

                        • print(response.content.decode())

                        • # 打印響應對應請求的請求頭信息

                        • print(response.request.headers)


                        從瀏覽器中復制User-Agent,構造Headers字典;完成下面的代碼后,運行代碼查看結果


                        • import requests


                        • url = 'http://www.6798111.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,模擬瀏覽器發送請求

                        • response = requests.get(url, headers=headers)


                        • print(response.content)


                        • # 打印請求頭信息

                        • print(response.request.headers)


                        發送帶參數的請求:

                        我們在使用百度搜索的時候經常發現url地址中會有一個 ?,那么該問號后邊的就是請求參數,又叫做查詢字符串


                        在url攜帶參數,直接對含有參數的url發起請求


                        • import requests


                        • 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"}


                        • url = 'https://www.baidu.com/s?wd=python'


                        • response = requests.get(url, headers=headers)



                        通過Params攜帶參數字典:

                        1.構建請求參數字典

                        2.向接口發送請求的時候帶上參數字典,參數字典設置給params


                        • import requests


                        • 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"}


                        • # 這是目標url

                        • # url = 'https://www.baidu.com/s?wd=python'


                        • # 最后有沒有問號結果都一樣

                        • url = 'https://www.baidu.com/s?'


                        • # 請求參數是一個字典 即wd=python

                        • kw = {'wd': 'python'}


                        • # 帶上請求參數發起請求,獲取響應

                        • response = requests.get(url, headers=headers, params=kw)


                        • print(response.content)

                        • 從瀏覽器中復制User-Agent和Cookie

                        • 瀏覽器中的請求頭字段和值與headers參數中必須一致

                        • headers請求參數字典中的Cookie鍵對應的值是字符串

                        • import requests


                        • url = 'https://github.com/USER_NAME'


                        • # 構造請求頭字典

                        • headers = {

                        • # 從瀏覽器中復制過來的User-Agent

                        • 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',

                        • # 從瀏覽器中復制過來的Cookie

                        • 'Cookie': 'xxx這里是復制過來的cookie字符串'

                        • }


                        • # 請求頭參數字典中攜帶cookie字符串

                        • resp = requests.get(url, headers=headers)


                        • print(resp.text)




                        超時參數timeout的使用:

                        在平時網上沖浪的過程中,我們經常會遇到網絡波動,這個時候,一個請求等了很久可能仍然沒有結果。

                        在爬蟲中,一個請求很久沒有結果,就會讓整個項目的效率變得非常低,這個時候我們就需要對請求進行強制要求,讓他必須在特定的時間內返回結果,否則就報錯。


                        1、超時參數timeout的使用方法

                        response = requests.get(url, timeout=3)

                        2、timeout=3表示:發送請求后,3秒鐘內返回響應,否則就拋出異常


                        • import requests



                        • url = 'https://twitter.com'

                        • response = requests.get(url, timeout=3) # 設置超時時間



                        Requests發送post請求的方法:


                        • response = requests.post(url, data)

                        • data參數接收一個字典

                        • requests模塊發送post請求函數的其它參數和發送get請求的參數完全一致


                        注意運行的時候開梯子就會報錯



                        第4條葵花寶典
                        == ==

                        Copyright www.6798111.com Rights Reserved葵花寶典教程.鄂icp2022001145號-1

                        分享:

                        支付寶

                        微信

                        性欧美乱子伦,两根一进一出啊灌满了啊,被公侵犯玩弄漂亮人妻中文
                        <em id="hh9r9"><nobr id="hh9r9"><nobr id="hh9r9"></nobr></nobr></em>

                              <form id="hh9r9"><listing id="hh9r9"><meter id="hh9r9"></meter></listing></form>

                                              <address id="hh9r9"></address>