簡(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/ 安裝:
一、請(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)求方法
import requests
url = "http:///post"
resp = requests.put(url="http:///put", data=None) # 修改
二、響應(yīng)(response)
三,、參數(shù)
proxies # http代理, 是一個(gè)字典 [字典映射協(xié)議到代理的URL] proxies = {
verify # 請(qǐng)求時(shí)是否驗(yàn)證SSL證書(shū),;默認(rèn)驗(yàn)證的,關(guān)閉verify=False即可 import urllib3
stream # stream=False 響應(yīng)內(nèi)容將立即下載 # stream=True將以流的形式下載 resp = requests('http:///bytes/102400', stream=True)
files (文件上傳) files = {}
allow_redirects=False # 關(guān)閉重定向 resp = requests.get('http://github.com', allow_redirects=False)
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í))APIrequests底層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.
【常用于模擬登錄】 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ù)) |
|