• 售前

  • 售后

热门帖子
入门百科

详解利用scrapy举行模仿登陆三种方式

[复制链接]
123457191 显示全部楼层 发表于 2021-10-25 20:05:08 |阅读模式 打印 上一主题 下一主题
scrapy有三种方法模仿登陆方式:
- 直接携带cookies
- 找url地址,发送post哀求存储cookie
- 找到对应的form表单,主动解析input标签,主动解析post哀求的url地址,主动带上数据,主动发送哀求

1、携带cookies登陆github

  1. import scrapy
  2. import re
  3. class Login1Spider(scrapy.Spider):
  4.   name = 'login1'
  5.   allowed_domains = ['github.com']
  6.   start_urls = ['https://github.com/NoobPythoner'] # 这是一个需要登陆以后才能访问的页面
  7.   def start_requests(self): # 重构start_requests方法
  8.     # 这个cookies_str是抓包获取的
  9.     cookies_str = '...' # 抓包获取
  10.     # 将cookies_str转换为cookies_dict
  11.     cookies_dict = {i.split('=')[0]:i.split('=')[1] for i in cookies_str.split('; ')}
  12.     yield scrapy.Request(
  13.       self.start_urls[0],
  14.       callback=self.parse,
  15.       cookies=cookies_dict
  16.     )
  17.   def parse(self, response): # 通过正则表达式匹配用户名来验证是否登陆成功
  18.     result_list = re.findall(r'noobpythoner|NoobPythoner', response.body.decode())
  19.     print(result_list)
  20.     pass
复制代码
注意:
scrapy中cookie不能够放在headers中,在构造哀求的时间有专门的cookies参数,能够担当字典情势的coookie
在setting中设置ROBOTS协议、USER_AGENT

2、使用scrapy.FormRequest()登录


通过scrapy.FormRequest能够发送post哀求,同时需要添加fromdata参数作为哀求体,以及callback
  1. yield scrapy.FormRequest(
  2.        "https://github.com/session",
  3.        formdata={
  4.          "authenticity_token":authenticity_token,
  5.          "utf8":utf8,
  6.          "commit":commit,
  7.          "login":"****",
  8.          "password":"****"
  9.        },
  10.        callback=self.parse_login
  11.      )
复制代码
3、使用scrapy.Formrequest.from_response登陆github

  1. import scrapy
  2. import re
  3. class Login3Spider(scrapy.Spider):
  4.   name = 'login3'
  5.   allowed_domains = ['github.com']
  6.   start_urls = ['https://github.com/login']
  7.   def parse(self, response):
  8.     yield scrapy.FormRequest.from_response(
  9.       response, # 传入response对象,自动解析
  10.       # 可以通过xpath来定位form表单,当前页只有一个form表单时,将会自动定位
  11.       formxpath='//*[@id="login"]/form',
  12.       formdata={'login': '****', 'password': '***'},
  13.       callback=self.parse_login
  14.     )
  15.   def parse_login(self,response):
  16.     ret = re.findall(r"noobpythoner|NoobPythoner", response.text)
  17.     print(ret)
复制代码
到此这篇关于详解使用scrapy进行模仿登陆三种方式的文章就介绍到这了,更多相干scrapy模仿登陆内容请搜刮脚本之家从前的文章或继承浏览下面的相干文章盼望各人以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作