Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。
————————————————
requests请求获取url,cookies,history
import requests,json
url = "https://www.360buy.com/"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36 Edg/96.0.1054.53'
}
rsp = requests.post(url,headers=headers)
print(rsp.url) #获取url,cookies,history,status_code,........
C:\Users\井子扬\AppData\Local\Microsoft\WindowsApps\python.exe D:/学习软件工具/pycharm/pachong/static/lear001.py
https://www.jd.com/
进程已结束,退出代码0
使用session对象保持回话状态
为了体现会话保持与非会话保持,下面模拟使用普通的requests请求和session请求,
在第一个请求中设置cookie信息请求完毕后再通过发送第二个请求cookie的请求来查看是否能返回第一次发送的cookie
使用requests方法请求:
import requests,json
#sess = requests.session()
requests.get("http://httpbin.org/cookies/set?sessioncookie=123456")
rsp = requests.get("http://httpbin.org/cookies")
print(rsp.text)
-------------------------------------------------------------------------------------
输出效果:
输出效果:
{
"cookies": {}
}
session确保了回话的状态
import requests,json
sess = requests.session()
sess.get("http://httpbin.org/cookies/set?sessioncookie=123456")
rsp = sess.get("http://httpbin.org/cookies")
print(rsp.text)
-------------------------------------------------------------------------------------
输出效果:
输出效果:
{
"cookies": {
"sessioncookie": "123456"
}
}
设置访问代理
有一些网站会对同一个ip访问次数过多后进行拒绝所有可以设置代理ip进行访问
import requests,json
proxies= {
'http':'http://112.14.47.6:52024'
}
rsp = requests.get("http://httpbin.org/ip",proxies=proxies)
print(rsp.text)
-------------------------------------------------------------------------------------
输出效果:
{
"origin": "112.14.47.6" #如果返回是代理ip则代理成功反之不成功
}
session案例:
import requests
url = 'https://passport.17k.com/ck/user/login'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
}
data = {
"loginName" : "17538355593",
"password": "ilovechina123"
}
s = requests.session() # 创建一个session对象
r = s.post(url, data=data) #使用定义好的session对象发送post请求通过登陆链接登录到网站中
#print(r.text)
book_list = s.get("https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919") #再次使用定义好的session对象发送到已经登录到的界面中的某个链接
print(book_list.json())
--------------------------------------------------------------------------
输出展示:
D:\学习软件工具\pycharm\openstack-api\venv\Scripts\python.exe D:/学习软件工具/pycharm/openstack-api/venv/pachong/小说网站.py
{'status': {'code': 0, 'msg': 'succ'}, 'data': [{'bookId': 3255432, 'bookName': '男人三十', 'coverImg': 'https://cdn.static.17k.com/book/189x272/32/5
4/3255432.jpg-189x272?v=1607923792000', 'authorId': 66535482, 'authorPenName': '小白菜', 'introduction': '本是千万富翁,却遭遇破产危机,结婚六年的妻子
还送给我一顶大大的绿帽。\n人生低谷,却无意间结识美女总裁。\n为还自己清白,我重振昔日辉煌,不仅要手刃仇人,我还要让那些瞧不起我的人跪下来叫我爸爸。\n人性是