• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解使用scrapy进行模拟登陆三种方式

    scrapy有三种方法模拟登陆方式:
    - 直接携带cookies
    - 找url地址,发送post请求存储cookie
    - 找到对应的form表单,自动解析input标签,自动解析post请求的url地址,自动带上数据,自动发送请求

    1、携带cookies登陆github

    import scrapy
    import re
     
    class Login1Spider(scrapy.Spider):
      name = 'login1'
      allowed_domains = ['github.com']
      start_urls = ['https://github.com/NoobPythoner'] # 这是一个需要登陆以后才能访问的页面
     
      def start_requests(self): # 重构start_requests方法
        # 这个cookies_str是抓包获取的
        cookies_str = '...' # 抓包获取
        # 将cookies_str转换为cookies_dict
        cookies_dict = {i.split('=')[0]:i.split('=')[1] for i in cookies_str.split('; ')}
        yield scrapy.Request(
          self.start_urls[0],
          callback=self.parse,
          cookies=cookies_dict
        )
     
      def parse(self, response): # 通过正则表达式匹配用户名来验证是否登陆成功
        result_list = re.findall(r'noobpythoner|NoobPythoner', response.body.decode())
        print(result_list)
        pass
    

    注意:

    scrapy中cookie不能够放在headers中,在构造请求的时候有专门的cookies参数,能够接受字典形式的coookie
    在setting中设置ROBOTS协议、USER_AGENT

    2、使用scrapy.FormRequest()登录

    通过scrapy.FormRequest能够发送post请求,同时需要添加fromdata参数作为请求体,以及callback

     yield scrapy.FormRequest(
           "https://github.com/session",
           formdata={
             "authenticity_token":authenticity_token,
             "utf8":utf8,
             "commit":commit,
             "login":"****",
             "password":"****"
           },
           callback=self.parse_login
         )
    

    3、使用scrapy.Formrequest.from_response登陆github

    import scrapy
    import re
     
    class Login3Spider(scrapy.Spider):
      name = 'login3'
      allowed_domains = ['github.com']
      start_urls = ['https://github.com/login']
     
      def parse(self, response):
        yield scrapy.FormRequest.from_response(
          response, # 传入response对象,自动解析
          # 可以通过xpath来定位form表单,当前页只有一个form表单时,将会自动定位
          formxpath='//*[@id="login"]/form', 
          formdata={'login': '****', 'password': '***'},
          callback=self.parse_login
        )
     
      def parse_login(self,response):
        ret = re.findall(r"noobpythoner|NoobPythoner", response.text)
        print(ret)
    

    到此这篇关于详解使用scrapy进行模拟登陆三种方式的文章就介绍到这了,更多相关scrapy模拟登陆内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Scrapy模拟登录赶集网的实现代码
    • Scrapy框架实现的登录网站操作示例
    • python爬虫框架scrapy实现模拟登录操作示例
    上一篇:利用Python如何画一颗心、小人发射爱心
    下一篇:scrapy-splash简单使用详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解使用scrapy进行模拟登陆三种方式 详解,使用,scrapy,进行,模拟,