久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

requests第三方庫(kù)

 易禪浮屠 2022-03-04

簡(jiǎn)介:

requests是一個(gè)優(yōu)雅而簡(jiǎn)單的Python 第三方HTTP請(qǐng)求庫(kù),,專為人類而構(gòu)建。

requests的官方文檔同樣也非常的完善詳盡,,而且少見(jiàn)的有中文官方文檔:http://cn./zh_CN/latest/,。

英文文檔:http://docs./en/master/api/

安裝:

pip install requests -i https://pypi./simple

一、請(qǐng)求(requests)

每一個(gè)請(qǐng)求方法都有一個(gè)對(duì)應(yīng)的API,。比如GET請(qǐng)求就使用get()方法, 而POST請(qǐng)求就使用post()方法,,并且將需要提交的數(shù)據(jù)傳遞給data參數(shù)即可

請(qǐng)求方法

  • get 獲取頁(yè)面數(shù)據(jù)
 import requests
 ?
 url = "https://www.baidu.com"
 headers = {
     "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) \
 Chrome/73.0.3683.86 Safari/537.36",
     "Referer":"https://www.baidu.com"
 }
 resp = requests.get(url, headers=headers)
  • post 提交數(shù)據(jù)到指定資源
 url = "http:///post"
 form_data = {
  'username':'yelan',
  'password':'xxxxxxx'
 }
 resp = requests.post(url=url, data=form_data)
  • 其他的請(qǐng)求類型
 resp = requests.put(url="http:///put", data=None)    # 修改
 resp = requests.delete("http:///delete") # 刪除
 ?
 resp = requests.head("http:///head") # 請(qǐng)求頭部
 resp = requests.options("http:///options") # 查看服務(wù)器性能

二、響應(yīng)(response)

屬性/方法說(shuō)明
text屬性 返回時(shí)的文本內(nèi)容(html); 當(dāng)然對(duì)返回的數(shù)據(jù)使用 resp.content.decode()就相當(dāng)于resp.text
content屬性 返回的二進(jìn)制的響應(yīng)數(shù)據(jù)
json方法 對(duì)json數(shù)據(jù)轉(zhuǎn)dict; 只有返回的數(shù)據(jù)是json是才可以使用
測(cè)試網(wǎng)站: http:///post 返回的都是json數(shù)據(jù)
resp.encoding = 'utf-8' 指定編碼
status_code屬性 響應(yīng)狀態(tài)碼
headers屬性 響應(yīng)頭部(字典)
cookies屬性 響應(yīng)的set-cookies
url 屬性 訪問(wèn)的url
history屬性 返回響應(yīng)的歷史 [使用響應(yīng)對(duì)象的 history 屬性來(lái)追蹤重定向]

三,、參數(shù)

urllib3.disable_warnings() # 禁用警告

參數(shù)說(shuō)明
url 請(qǐng)求的url
params=None get請(qǐng)求攜帶的參數(shù), 一般用于查詢或者搜索(返回的數(shù)據(jù)在args鍵中),。對(duì)于一鍵多值的key,而value用一個(gè)列表,。 如:params = { 'name': 'yelan', 'hobby': ['django', 'play'] }
data=None post請(qǐng)求提交的數(shù)據(jù)(如表單)
headers=None 請(qǐng)求頭部信息
json=None 發(fā)送請(qǐng)求時(shí)攜帶json數(shù)據(jù)(返回的數(shù)據(jù)在鍵data中,當(dāng)然也在json中)
cookies=None 請(qǐng)求攜帶的cookies,;當(dāng)然也可以把cookies更新到headers的頭部信息;[Dict或CookieJar對(duì)象]
allow_redirects=True bool類型 請(qǐng)求是默認(rèn)開(kāi)啟重定向的, False禁止重定向,。[Enable啟用/disable禁用]
proxies=None http代理, 是一個(gè)字典 [字典映射協(xié)議到代理的URL]
verify=None 請(qǐng)求時(shí)是否驗(yàn)證verify
stream stream=False 響應(yīng)內(nèi)容將立即下載 # stream=True將以流的形式下載
proxies # http代理, 是一個(gè)字典 [字典映射協(xié)議到代理的URL]
 proxies = {
     "http":"http://221.6.32.206:41816",
     "https":"https://221.6.32.206:41816"
 }
 resp = requests.get('http:///ip', proxies=proxies)
verify # 請(qǐng)求時(shí)是否驗(yàn)證SSL證書(shū),;默認(rèn)驗(yàn)證的,關(guān)閉verify=False即可
 import urllib3
 ?
 urllib3.disable_warnings()  # 禁用警告信息
 ?
 # 如果我們?cè)L問(wèn)的目標(biāo)網(wǎng)站,,證書(shū)有問(wèn)題,,或者我們使用了代理服務(wù)的證書(shū)有問(wèn)題,
 # 在這種情況下,,如果我們還是要對(duì)這些目標(biāo)發(fā)送請(qǐng)求,,那么我可以關(guān)閉requests的證書(shū)驗(yàn)證
 resp = requests.get(url="http://www.", headers=headers, verify=False)
stream # stream=False 響應(yīng)內(nèi)容將立即下載 # stream=True將以流的形式下載
 resp = requests('http:///bytes/102400', stream=True)
 for chunk in resp.iter_conten(chunk_size=1024):
     print(chunk)
     with ...
     
files (文件上傳)
 files = {}
 with open("favuicon.ico", "rb") as f:
     files.update({"file": f.read()})
 resp = requests.post("http:///post", files=files)
 # 當(dāng)然最好指定上傳文件的content-type, 將其更新到headers中攜帶
allow_redirects=False # 關(guān)閉重定向
 resp = requests.get('http://github.com', allow_redirects=False)
 print(r.headers) # 該網(wǎng)址會(huì)重定向,,關(guān)閉重定向后,,無(wú)響應(yīng)數(shù)據(jù)
auth (身份認(rèn)證)
# 如果訪問(wèn)的網(wǎng)站,需要我們驗(yàn)證用戶身份信息(如 用戶名 密碼)
from request.auth import HTTPBasicAuth

url = 'http://need authentication of url'
resp = requests.get(url, auth=('username', 'password'))

# 其實(shí)上面的auth參數(shù)是HTTPBasicAuth的實(shí)例,,它會(huì)默認(rèn)使用HTTPBasicAuth這個(gè)類來(lái)驗(yàn)證:
requests.get(url, auth=HTTPBasicAuth('username', 'password'))
timeout (設(shè)置超時(shí))

API

requests底層api接口 ==> request :
def request(self, method, url,
	params=None, data=None, headers=None, cookies=None, files=None,
	auth=None, timeout=None, allow_redirects=True, proxies=None,
	hooks=None, stream=None, verify=None, cert=None, json=None):
    pass

四,、session 會(huì)話對(duì)象

session能夠自動(dòng)的整合每次請(qǐng)求返回的set-cookie, 并且在后續(xù)的請(qǐng)求中自動(dòng)攜帶.

就是說(shuō)你使用session對(duì)象來(lái)發(fā)送請(qǐng)求, 那么返回的set-cookie會(huì)自動(dòng)保存和整合 并自動(dòng)在后續(xù)請(qǐng)求中攜帶上. 就不用手動(dòng)給后續(xù)請(qǐng)求設(shè)置cookies.

  1. 所有會(huì)話對(duì)象發(fā)出去的請(qǐng)求 會(huì)自動(dòng)保持狀態(tài)

  2. 對(duì)同一主機(jī)發(fā)送多個(gè)請(qǐng)求, 重用TCP連接

  3. session 所有的api和requests都是一樣的

  4. Session 類中封裝了requests所需的所有請(qǐng)求

【常用于模擬登錄】

import requests

url = 'http:///get'	# 該測(cè)試網(wǎng)址返回的都是json數(shù)據(jù)

session = requests.Session()
resp = session.get(url, headers=headers)
print(resp.text)
print(resp.json())

# 設(shè)置整個(gè)headers
session.headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
}
# 如果需要添加或者更新headers
referer = {'Referer': 'http://www.baidu.com'}
session.headers.update(referer)

模擬豆瓣登錄
import requests
from Spiders_class.demo_03 import my_info as mb

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36",
    "Referer": "https://accounts.douban.com/passport/login"
}
login_url = 'https://accounts.douban.com/j/mobile/login/basic'	# 登錄請(qǐng)求的url
login_data={
    "ck": "",
    "name": mb.user,
    "password": mb.pwd,
    "remember": "false",
    "ticket": "",
}
personal_url = 'https://www.douban.com/people/197134290/'		# 用戶個(gè)人中心

# session能夠自動(dòng)的整合每次請(qǐng)求返回的set-cookie, 并且在后續(xù)的請(qǐng)求中自動(dòng)攜帶.

session = requests.Session()
session.headers = headers	# 在會(huì)話時(shí)就攜帶頭部信息(整個(gè)headers)
resp = session.post(login_url, data=login_data)
response = session.get(personal_url)
response = 'utf-8'
print(response.text)

開(kāi)發(fā)流程:

1.找到目標(biāo)數(shù)據(jù)(如需要請(qǐng)求的目標(biāo)url)
2.分析請(qǐng)求流程(從目標(biāo)頁(yè)面分析、匹配到所有頁(yè)面的url)
3.發(fā)起http請(qǐng)求(對(duì)所有的url發(fā)起請(qǐng)求,;多線程)
4.提取清洗數(shù)據(jù)(re,、xpath等以及其他模塊的方法)
5.數(shù)據(jù)持久化(構(gòu)造結(jié)構(gòu)化數(shù)據(jù)、保存到文件或數(shù)據(jù)庫(kù))

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多