Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。
————————————————

requests请求获取url,cookies,history

  1. import requests,json
  2. url = "https://www.360buy.com/"
  3. headers = {
  4. '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'
  5. }
  6. rsp = requests.post(url,headers=headers)
  7. print(rsp.url) #获取url,cookies,history,status_code,........
  1. C:\Users\井子扬\AppData\Local\Microsoft\WindowsApps\python.exe D:/学习软件工具/pycharm/pachong/static/lear001.py
  2. https://www.jd.com/
  3. 进程已结束,退出代码0

使用session对象保持回话状态

为了体现会话保持与非会话保持,下面模拟使用普通的requests请求和session请求,

在第一个请求中设置cookie信息请求完毕后再通过发送第二个请求cookie的请求来查看是否能返回第一次发送的cookie
使用requests方法请求:

  1. import requests,json
  2. #sess = requests.session()
  3. requests.get("http://httpbin.org/cookies/set?sessioncookie=123456")
  4. rsp = requests.get("http://httpbin.org/cookies")
  5. print(rsp.text)
  6. -------------------------------------------------------------------------------------
  7. 输出效果:
  8. 输出效果:
  9. {
  10. "cookies": {}
  11. }

session确保了回话的状态

  1. import requests,json
  2. sess = requests.session()
  3. sess.get("http://httpbin.org/cookies/set?sessioncookie=123456")
  4. rsp = sess.get("http://httpbin.org/cookies")
  5. print(rsp.text)
  6. -------------------------------------------------------------------------------------
  7. 输出效果:
  8. 输出效果:
  9. {
  10. "cookies": {
  11. "sessioncookie": "123456"
  12. }
  13. }

设置访问代理

有一些网站会对同一个ip访问次数过多后进行拒绝所有可以设置代理ip进行访问

  1. import requests,json
  2. proxies= {
  3. 'http':'http://112.14.47.6:52024'
  4. }
  5. rsp = requests.get("http://httpbin.org/ip",proxies=proxies)
  6. print(rsp.text)
  7. -------------------------------------------------------------------------------------
  8. 输出效果:
  9. {
  10. "origin": "112.14.47.6" #如果返回是代理ip则代理成功反之不成功
  11. }

session案例:

  1. import requests
  2. url = 'https://passport.17k.com/ck/user/login'
  3. headers = {
  4. "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"
  5. }
  6. data = {
  7. "loginName" : "17538355593",
  8. "password": "ilovechina123"
  9. }
  10. s = requests.session() # 创建一个session对象
  11. r = s.post(url, data=data) #使用定义好的session对象发送post请求通过登陆链接登录到网站中
  12. #print(r.text)
  13. book_list = s.get("https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919") #再次使用定义好的session对象发送到已经登录到的界面中的某个链接
  14. print(book_list.json())
  15. --------------------------------------------------------------------------
  16. 输出展示:
  17. D:\学习软件工具\pycharm\openstack-api\venv\Scripts\python.exe D:/学习软件工具/pycharm/openstack-api/venv/pachong/小说网站.py
  18. {'status': {'code': 0, 'msg': 'succ'}, 'data': [{'bookId': 3255432, 'bookName': '男人三十', 'coverImg': 'https://cdn.static.17k.com/book/189x272/32/5
  19. 4/3255432.jpg-189x272?v=1607923792000', 'authorId': 66535482, 'authorPenName': '小白菜', 'introduction': '本是千万富翁,却遭遇破产危机,结婚六年的妻子
  20. 还送给我一顶大大的绿帽。\n人生低谷,却无意间结识美女总裁。\n为还自己清白,我重振昔日辉煌,不仅要手刃仇人,我还要让那些瞧不起我的人跪下来叫我爸爸。\n人性是