91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Python中Request 的作用是什么

發布時間:2021-07-10 14:11:21 來源:億速云 閱讀:292 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關Python中Request 的作用是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Request的介紹

在入門教程中我們介紹了urllib庫和urllib2的用法,同時我們了解一些爬蟲的基礎以及對爬蟲有了基本的了解。其實在我們生產環境中,使用Request庫更加方便與實用,同時我們這需要短短的幾行代碼就能解決大量的事情。

Request的安裝

在Python簡介與環境配置中我們已經安裝了PIP管理工具,如果你是2.x版本,也可以使用easy_install來安裝Request庫,它可以幫助我們很容易的安裝三方庫:

使用pip安裝Request

# pip2.x安裝requests
pip install requests
# pip3.x安裝requests
pip3 install requests

使用easy_install安裝Request

easy_install requests

Request的使用

python中引入三方模塊非常簡單,只需要import引入即可:

import requests

req = requests.get("https://ptorch.com")
print(req.text)

這樣我們即可快速提取目標網頁的代碼,使用起來非常方便!

Request基本請求方式

你可以通過requests庫發送所有的http請求:

requests.get("http://httpbin.org/get") #GET請求
requests.post("http://httpbin.org/post") #POST請求
requests.put("http://httpbin.org/put") #PUT請求
requests.delete("http://httpbin.org/delete") #DELETE請求
requests.head("http://httpbin.org/get") #HEAD請求
requests.options("http://httpbin.org/get") #OPTIONS請求

使用Request發送GET請求

想要使用爬蟲獲取某個目標網頁,直接使用get方法即可發送HTTP GET請求:

req = requests.get("http://httpbin.org/get")

通常情況下我們不會只訪問基礎網頁,特別是爬取動態網頁時我們需要傳遞不同的參數獲取不同的內容;GET傳遞參數有兩種方法,可以直接在鏈接中添加參數或者利用params添加參數:

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
req = requests.get("http://httpbin.org/get", params=payload)
# 方法二
# req = requests.get("http://httpbin.org/get?key2=value2&key1=value1")
print(req.url)

使用Request發送POST請求

其實發送POST請求與GET方式很相似,只是參數的傳遞我們需要定義在data中即可:

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
req = requests.post("http://httpbin.org/post", data=payload)
print(req.text)

POST發送JSON數據

很多時候你想要發送的數據并非編碼為表單形式的,發現特別在爬取很多java網址中出現這個問題。如果你傳遞一個string而不是一個 dict,那么數據會被直接發布出去。我們可以使用json.dumps()是將dict轉化成str格式;此處除了可以自行對dict進行編碼,你還可以使用json參數直接傳遞,然后它就會被自動編碼。

import json
import requests

url = 'http://httpbin.org/post'
payload = {'some': 'data'}

req1 = requests.post(url, data=json.dumps(payload))
req2 = requests.post(url, json=payload)
print(req1.text)
print(req2.text)

POST文件上傳

如果我們要使用爬蟲上傳文件,可以使用file參數:

url = 'http://httpbin.org/post'
files = {'file': open('test.xlsx', 'rb')}

req = requests.post(url, files=files)
req.text

如果有熟悉WEB開發的伙伴應該知道,如果你發送一個非常大的文件作為multipart/form-data請求,你可能希望將請求做成數據流。默認下requests不支持, 你可以使用requests-toolbelt三方庫。

請求會話

在很多時候我們開發的爬蟲需要登錄,登錄后我們需要記錄登錄狀態,否則無法爬取登錄后才能爬取的網頁,在request中提供了requests.Session()這樣的類:

import requests
s = requests.Session()
s.get('http://httpbin.org/get')

這樣我們的request只要調用一次登錄入口就會自動維護網站的Session記錄我們的登錄狀態,以后我們可以直接使用request訪問登錄才能訪問的頁面。

Cookie獲取

我們可以使用cookies來獲取響應中的cookie: 如果某個響應中包含一些 cookie,你可以快速訪問它們:

req = requests.get("https://ptorch.com")

req = requests.get("https://ptorch.com")
print(req.cookies)
print(req.cookies['laravel_session'])

要想發送你的cookies到服務器,可以使用cookies參數:

cookies = dict(cookies_are='working Test')

req = requests.get("http://httpbin.org/cookies", cookies=cookies)
print(req.text)
# '{"cookies": {"cookies_are": "working Test"}}'

Cookie的返回對象為RequestsCookieJar,它的行為和字典類似,但界面更為完整,適合跨域名跨路徑使用。你還可以把Cookie Jar傳到Requests中:

jar = requests.cookies.RequestsCookieJar()
jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
url = 'http://httpbin.org/cookies'
req = requests.get(url, cookies=jar)
print(req.text)
# '{"cookies": {"tasty_cookie": "yum"}}'

保存cookie方便下次訪問,我們需要將CookieJar轉為字典或者將字典轉為CookieJar

#將CookieJar轉為字典:
cookies = requests.utils.dict_from_cookiejar(r.cookies)

#將字典轉為CookieJar:
cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)

超時配置

你可以告訴requests在經過以timeout參數設定的秒數時間之后停止等待響應。基本上所有的生產代碼都應該使用這一參數。如果不使用,你的程序可能會永遠失去響應:

requests.get('http://github.com', timeout=0.001)

注:timeout 僅對連接過程有效,與響應體的下載無關。

也就是說,這個時間只限制請求的時間。即使返回的 response 包含很大內容,下載需要一定時間,然而這并沒有什么卵用。

代理

很多情況下網址具有反爬蟲機制,如果我們的訪問量達到一定的數量會封掉我們的IP,比如很多朋友爬取微信文章常常需要使用代理,你可以通過proxies參數為任意請求來設置代理,我們可以百度免費代理來獲取一些免費的代理,速度不是很快,但是練習足夠了。

import requests

proxies = {
  "https": "http://127.0.0.1:4433"
}
req = requests.post("http://httpbin.org/post", proxies=proxies)
print(req.text)

我們也可以通過HTTP_PROXY和HTTPS_PROXY環境變量來配置代理。

export HTTP_PROXY="http://127.0.0.1:2091"
export HTTPS_PROXY="http://127.0.0.1:2092"

請求頭設置

爬蟲中我們需要定制請求頭來修改我們的HTTP請求,特別是很多發爬蟲工具禁止腳本訪問,我們可以設置headers參數來模擬瀏覽器訪問,同時我們還可以通過headers來傳遞cookie來保持我們的登錄狀態:

headers = {'user-agent': 'my-app/0.0.1'}
req = requests.get("https://api.github.com/some/endpoint", headers=headers)

下載圖片

有時候我們想下載我們爬取頁面的img圖片,你可以使用requests請求圖片,獲取response.content文本信息,實際上獲取的是圖片的二進制文本,然后保存即可:

import requests

response = requests.get("https://cache.yisu.com/upload/information/20210521/347/241257.png")
img = response.content
open('logo.jpg', 'wb').write(response.content)

如果要下載驗證碼,可以使用上面的會話請求加載這里的下載代碼即可。

獲取Request響應

爬蟲中我們發送了請求,我們可以使用如下方法獲取Request響應用于分析和檢測:

# 響應狀態碼
req.status_code
# 響應頭
req.headers
# 獲取請求鏈接
req.url
# 獲取網頁編碼
req.encoding
# 獲取cookie
req.cookies
# 獲取網頁代碼
req.text

上述就是小編為大家分享的Python中Request 的作用是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

田林县| 抚顺市| 达孜县| 伊金霍洛旗| 上饶县| 大田县| 济阳县| 宁武县| 和政县| 宣汉县| 宿迁市| 兴城市| 江津市| 农安县| 奎屯市| 额尔古纳市| 永靖县| 靖江市| 三台县| 嘉义县| 沙河市| 临清市| 合江县| 塘沽区| 繁昌县| 万安县| 六枝特区| 毕节市| 苗栗县| 调兵山市| 任丘市| 永昌县| 乐亭县| 丽江市| 南城县| 镇沅| 长垣县| 沈阳市| 金昌市| 清远市| 邢台县|