1.requests.get()請求
用法:
response= requests.get(url,headers=headers)
2.requests.post()請求
哪些地方會用到post請求?
????登錄注冊(POST 比 GET更安全)
????需要傳出大文本內(nèi)容的時(shí)候(POST 請求對數(shù)據(jù)長度沒有要求)
用法:
response= requests.get(url铣揉,data,headers= headers)
3.使用request是提供的session類來請求登錄之后的網(wǎng)站思路:
1)實(shí)例化session
2)使用Session發(fā)送請求荞估,登錄對應(yīng)的網(wǎng)站玄括,把cookie保存在session中
3)再次使用Session請求登錄之后才能訪問的網(wǎng)站纸型,session能夠自動(dòng)的攜帶登錄成功時(shí)保存在其中的cookie進(jìn)行請求蘸泻。
4.response 的 常用方法:
response.text 返回的是經(jīng)過某種解碼的string類型
response.content 返回的是沒有經(jīng)過任何解碼的字節(jié)類型
response.status_code:查看狀態(tài)碼
200 說明訪問的一個(gè)url成功瞻佛,并 不代表我們要訪問的url 成功脱篙,因?yàn)閡rl 重定向
response.request.headers :查看請求頭
response.headers :查看響應(yīng)頭
response.request.url :查看請求url
response.url :查看響應(yīng)url
(response.request.url 和 response.url? 可能會不一樣娇钱,因?yàn)榘l(fā)送的url被重定向)
5.尋找登錄的POST地址
1.在form 表單中尋找action對應(yīng)的url地址
? ? ? ? post 的 數(shù)據(jù)是imput 標(biāo)簽中name的值作為鍵,真正的用戶名密碼作為值的字典绊困,post url 的地址就是action對應(yīng)的url地址
2文搂。并不是所有的表單都有后action對應(yīng)的url地址,如果沒有秤朗,抓包
6.requests模擬登錄的三種方式
"""
方案一
"""
session = requests.session()
post_url ="http://www.renren.com/PLogin.do"
post_data = {"email":" ", "password":" "}
headers = {
"User-Agent":"Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Mobile Safari/537.36"}
# 使用session發(fā)送post請求煤蹭,cooki保存其中
session.post(post_url, data=post_data, headers=headers)
#? 在使用session進(jìn)行請求登錄之后才能訪問的地址
response = session.get("http://www.renren.com/962358740/profile")
#? 保存頁面信息
with open("renren1.html", "w", encoding="utf-8")as f:
f.write(response.content.decode())
"""
方案二:
不發(fā)送cookie,使用cookie 后去登錄后的頁面
1.cookie過期時(shí)間很長的網(wǎng)站
2.在cookies 過期之前能夠拿到所有的數(shù)據(jù)取视,比較麻煩
3.配合其他程序配合使用硝皂,其他程序獲取cookie, 當(dāng)前程序?qū)iT請求頁面
"""
headers = {
"User-Agent":"Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) "
? ? ? ? ? ? ? "Chrome/63.0.3239.84 Mobile Safari/537.36",
? ? ? ? ? ? ? ? ?"Cookie": "anonymid=jz6lo81xd5ugen; depovince=BJ; _r01_=1; JSESSIONID=abcANEf7iiTCe5BUtA-Xw; " \
????????????????????????????????????"ick_login=9224a681-9e68-4620-9f0c-e86b1462a009; loginfrom=null; " \
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"jebe_key=473e7eae-93ca-478d-8099-? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????07c05a7f317e%7C1dd0f5a21a75e7082c4cea72f175cf2b%7C1565505888579%7C1%7C1565505889504; " \
????????????????????????"jebe_key=473e7eae-93ca-478d-8099-? ? ? ? ? ????????????????????07c05a7f317e%7C1dd0f5a21a75e7082c4cea72f175cf2b%7C1565505888579%7C1%7C1565505889506; " \
????????????????????"ick=d9088bc5-3482-4ca8-a0b2-bf1b94860a99; ????????????????__utma=151146938.735476001.1565506549.1565506549.1565506549.1;" \
????????????????????" __utmc=151146938; __utmz=151146938.1565506549.1.1.utmcsr=renren.com|utmccn=? ? ? ? ? ? ? ????????????????(referral)|utmcmd=referral|utmcct=/; " \
????????????"__utmb=151146938.3.10.1565506549; wp_fold=0; t=d5a919c45ed7cd2ebac8ef6c3ba7fbbf0; " \
????????"societyguester=d5a919c45ed7cd2ebac8ef6c3ba7fbbf0; id=962358740; xnsid=807881c2; " \
????????????"jebecookies=be77bdf0-fce7-49e7-80f7-f71119bd07fb|||||"(根據(jù)自己獲取的session替換)
}
response = requests.post(url="http://www.renren.com/962358740",headers=headers)
print(response.content.decode())
# with open("renren2.html", "w", encoding="utf-8") as f:
#? f.write(response.content.decode())
"""
方案三:
不發(fā)送cookie作谭,使用cookie 后去登錄后的頁面
1.cookie過期時(shí)間很長的網(wǎng)站
2.在cookies 過期之前能夠拿到所有的數(shù)據(jù)稽物,比較麻煩
3.配合其他程序配合使用,其他程序獲取cookie折欠, 當(dāng)前程序?qū)iT請求頁面
"""
headers = {
"User-Agent":"Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/63.0.3239.84 Mobile Safari/537.36"
}
cookies ="anonymid=jz6lo81xd5ugen; depovince=BJ; _r01_=1; JSESSIONID=abcANEf7iiTCe5BUtA-Xw; " \
"ick_login=9224a681-9e68-4620-9f0c-e86b1462a009; loginfrom=null; " \
"jebe_key=473e7eae-93ca-478d-8099-07c05a7f317e%7C1dd0f5a21a75e7082c4cea72f175cf2b%7C1565505888579%7C1%7C1565505889504; " \
"jebe_key=473e7eae-93ca-478d-8099-07c05a7f317e%7C1dd0f5a21a75e7082c4cea72f175cf2b%7C1565505888579%7C1%7C1565505889506; " \
"ick=d9088bc5-3482-4ca8-a0b2-bf1b94860a99; __utma=151146938.735476001.1565506549.1565506549.1565506549.1;" \
" __utmc=151146938; __utmz=151146938.1565506549.1.1.utmcsr=renren.com|utmccn=(referral)|utmcmd=referral|utmcct=/; " \
"__utmb=151146938.3.10.1565506549; wp_fold=0; t=d5a919c45ed7cd2ebac8ef6c3ba7fbbf0; " \
"societyguester=d5a919c45ed7cd2ebac8ef6c3ba7fbbf0; id=962358740; xnsid=807881c2; " \
"jebecookies=be77bdf0-fce7-49e7-80f7-f71119bd07fb|||||"
# 將cookies 轉(zhuǎn)化成詞典行駛
cookies= {i.split("=")[0]:i.split("=")[1]for iin cookies.split(";")}
response = requests.post(url="http://www.renren.com/962358740",headers=headers,cookies=cookies)
print(response.content.decode())
# with open("renren3.html", "w", encoding="utf-8") as f:
#? f.write(response.content.decode())