国产99视频精品免视看6

    1. <em id="yud1w"><acronym id="yud1w"><u id="yud1w"></u></acronym></em>
      
      
      <button id="yud1w"></button>

      python

      当前位置:首页?>?requests爬虫?>?当前文章

      requests爬虫

      requests之cookie域session使用自动登录人人网

      2020-09-27 52赞 python中国网
      每篇文章努力于解决一个问题!python高级、python面试全套、操作系统经典课等可移步文章底部。

        Cookies

        如果一个http响应中包含了cookie,那么我们可以利用 cookies参数拿到:

      # -*- coding: utf-8 -*-
      import requests
      
      
      def get_html(url,retry=2):
          try:
              r = requests.get(url=url, headers=headers, stream=True)
          except Exception as e:
              print(e)
              if retry > 0:
                  get_html(url, retry - 1)
          else:
              cookiejar = r.cookies
              return cookiejar
      
      
      if __name__ == "__main__":
          # 自定义请求头信息
          headers = {
              'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
          }
          url = 'https://www.baidu.com/'
          cookiejar = get_html(url) #CookieJar对象
          cookiedict = requests.utils.dict_from_cookiejar(cookiejar) # 转成字典
          print(cookiedict)
      
      D:python3installpython.exe D:/python/py3script/test.py
      {'BAIDUID': '8C6CC54A0BE5DB56B2393B3441F127BC:FG=1', 'BIDUPSID': '8C6CC54A0BE5DB56B2393B3441F127BC', 'H_PS_PSSID': '1448_21103_29522_29520_28518_29099_28839_29221_29071', 'PSTM': '1563449386', 'delPer': '0', 'BDSVRTM': '0', 'BD_HOME': '0'}
      
      Process finished with exit code 0
      
      

        Session

        在requests里,session对象是一个常用的对象,这个对象代表一次用户会话(从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开)。

        会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie 。这样就可以实现自动登录。以人人网为例,实现思路如下:

      # -*- coding: utf-8 -*-
      import requests
      import re
      
      # 1. 创建session对象,可以保存Cookie值
      ssion = requests.session()
      # 2. 自定义 headers
      headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
      # 3. 需要登录的用户名和密码
      data = {"email":"[email protected]", "password":"772483200dong"}
      # 4. 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里
      ssion.post("http://www.renren.com/PLogin.do", data = data)
      # 5. session包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面
      r = ssion.get("http://www.renren.com/410043129/profile")
      # 6. 返回的内容正常
      html = r.text
      title = re.search('<title></title>',html) print(title.group(1)) #结果是 人人网 - 邓永洁?
      


        完整的自动登录人人网的代码

      # -*- coding: utf-8 -*-
      import requests
      import re
      
      # 自动登录
      def login_auto(url,data,retry=2):
          try:
              r = ssion.post(url=url, headers=headers, data=data)
          except Exception as e:
              print(e)
              if retry > 0:
                  login_auto(url, retry - 1)
          else:
              html = r.text
              return html
      
      # 检车登陆是否成功
      def check_login(html=''):
          try:
              title_re = re.search('
      ', html) except Exception as e: print(e) else: title = title_re.group(1) res = 'success' if '老董' in title else None return res if __name__ == "__main__": headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"} url = 'http://www.renren.com/PLogin.do' data = {"email": "[email protected]", "password": "772483200dong"} ssion = requests.session() html = login_auto(url,data) status = check_login(html) if status: print('登陆成功') # 访问一个登陆才能看到的页面 r = ssion.get("http://www.renren.com/410043129/profile") html = r.text title = re.search('<title>(.*?)</title>', html) print(title.group(1)) # 结果是 人人网 - 邓永洁?
      D:python3installpython.exe D:/python/py3script/python66.py
      登陆成功
      人人网 - 邓永洁?
      
      Process finished with exit code 0
      
      

      文章评论

      requests之cookie域session使用自动登录人人网文章写得不错,值得赞赏
      国产99视频精品免视看6