重点内容只有一个:用requests.session()创建session对象,相当于创建了一个特定的会话,帮我们自动保持了cookies。
例子:
import requests,json,csv
session = requests.session()
#用requests.session()创建session对象,相当于创建了一个特定的会话,帮我们自动保持了cookies。
headers = {
'Origin': 'http://wiki.qipeipu.net',
'Referer': 'http://wiki.qipeipu.net/login.action',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
}
def cookies_read():
file = open('c:\\Users\\69505\Desktop\\cookies.csv', 'r',encoding='utf-8')
#以reader读取模式,打开名为cookies.txt的文件。
reader=csv.reader(file)
cookies_text=''
for row in reader:
cookies_text=row[0]
break
cookies_dict = json.loads(cookies_text)
#一开始用txt文件存放session信息,报错:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0),排查不出问题就用了csv
#调用json模块的loads函数,把字符串转成字典。
cookies = requests.utils.cookiejar_from_dict(cookies_dict)
#把转成字典的cookies再转成cookies本来的格式。
return (cookies)
def sign_in():
url = 'http://.....net/dologin.action'
data = {
'pwd': '22.....922',
'warehouse': '6-7-139-71-88-400',
'os_username': '.....',
'os_password': '....',
'login': '登录'
}
session.post(url, headers=headers, data=data)
cookies_dict = requests.utils.dict_from_cookiejar(session.cookies)
#把cookies转化成字典。
#打印cookies_dict
cookies_str = json.dumps(cookies_dict)
#调用json模块的dumps函数,把cookies从字典再转成字符串。
#打印cookies_str
file=open('c:\\Users\\69505\Desktop\\cookies.csv', 'w',encoding='utf-8')
writer=csv.writer(file)
#创建名为cookies.txt的文件,以写入模式写入内容。
writer.writerow([cookies_str])
#把已经转成字符串的cookies写入文件。
file.close()
def write_message():
url='http://wiki.qipeipu.net/pages/viewpage.action'
params={
'pageId': "26619193"
}
response=session.get(url,headers=headers,params=params)
return response
try:
session.cookies = cookies_read()
except FileNotFoundError:
sign_in()
session.cookies = cookies_read()
num = write_message()
if num.status_code == 200:
print('成功啦!')
else:
sign_in()
session.cookies = cookies_read()
num = write_message()