scrapy模拟登录

对于scrapy来说,也是有两个方法模拟登陆:

  1. 直接携带cookie
  2. 找到发送post请求的url地址,带上信息,发送请求

scrapy模拟登陆之携带cookie

应用场景:

  1. cookie过期时间很长,常见于一些不规范的网站
  2. 能在cookie过期之前把搜有的数据数据拿到
  3. 配合其他程序使用,比如其使用selenium把登陆之后的cookie获取到保存到本地,scrapy发送请求之前先读取本地cookie
class RenrensipderSpider(scrapy.Spider):
    name = 'renrenspider'
    allowed_domains = ['renren.com']
    cookies = dict(  # 自己定义cookies,字典形式
        anonymid = 'j3jxk555-nrn0wh',
        ...
        wp_fold = 0
    )
    
    def start_requests(self):  # 重写start_request函数,指定start_urls的处理方式
        start_urls = 'http://www.renre.com/'
        yield scrapy.Request(start_urls,callback=self.parse, cookies=self.cookies)  # 指定callback函数,同时携带cookie
        
    def parse(self, response):
        ...

那么问题来了:如何知道我的cookie确定是在不同的解析函数中传递呢?

# Disable cookie(enaled by default)
# COOKIES_ENABLED = False  # cookie在setting中默认是开启的
COOKIES_DEBUG = True  # 在settings中添加该参数即可
# cookie能够在不同的解析函数中传递,前提也是COOKIES_ENABLED为True

终端效果入下:
[scrapy.downloadermiddlewares.cookies] DEBUG: Sending cookies to:
<GET http://zhibo.renren.com/top>
Cookie: anonymid=j3...
原文地址:https://www.cnblogs.com/colden/p/9859157.html