request.session()
目的是模擬登陸再愈,得到登陸后的網(wǎng)頁
類似方法設(shè)置cookie在header里榜苫,或者cookies=字典(方法在chrome分析的03小技巧中)
session模擬登陸時(shí)
post數(shù)據(jù)若能找到form表格的input接口與action的url,則ok
如果沒有翎冲,需要抓包(登陸時(shí)勾選preserve log)查詢登陸請求的network
- 若data有困難
1.js生成的垂睬,用綁定的js按鈕,選擇event listener抗悍,觀察sourse中的相關(guān)代碼驹饺,可添加斷點(diǎn),可用console缴渊,可導(dǎo)出赏壹、導(dǎo)入函數(shù)
2.沒有相關(guān)的js綁定,用search all file 尋找js所在位置(多根據(jù)索引搜索幾個(gè))
3.據(jù)此可以得到data的形成方法
4.也有可能根據(jù)之前響應(yīng)得到的
cookies
import requests
response=requests.get('http://www.baidu.com')
a=requests.utils.dict_from_cookiejar( response.cookies)
b=requests.utils.cookiejar_from_dict(a)
##cookies 變字典
requests.utils.unquote('https://tieba.baidu.com/f?kw=%E6%B5%81%E6%B5%AA%E6%B1%89')
requests.utils.quote('https://tieba.baidu.com/f?kw=流浪漢')
#url地址編碼解碼
response=requests.get('http://www.baidu.com',verify=False)
#ssl證書settled
response=requests.get('http://www.baidu.com'衔沼,timeout=10)
assert response.status_code==200
#狀態(tài)碼
from retrying import retrying
@retry(stop_max_attempt_number=7)
def blabla
#retry模塊
import requests
from retrying import retry
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"}
def _parse_url(url,method,data):
print('*'*20)
if method=='POST':
response=requests.post(url,data=data.headers=headers)
else:
response=requests.get(url,headers=headers,timeout=3)
assert response.status_code==200
return response.content.decode()
@retry(stop_max_attempt_number=3)###retry
def parse_url(url,method='GET',data=None):
try:
html_str=_parse_url(url)
except:
html_str=None
return html_str
if __name__=='__main__':
url='http://www.baidu.com'
print(parse_url(url))