Scrapy 中如何使用 Cookies 进行爬虫登录?
Scrapy 中使用 Cookies 进行爬虫登录,可以在登录页面获取到 Cookies ,然后将其设置到请求头部中,模拟登录成功后的状态。
以下是一个简单的 Scrapy 爬虫登录示例,网站为 pidancode.com,需要登录才能访问数据:
1. 创建 Scrapy 项目
在终端中执行以下命令创建新的 Scrapy 项目:
scrapy startproject cookie_login
- 编写登录爬虫
在 cookie_login 目录下创建一个名为 login_spider.py 的文件,编写登录爬虫代码:
import scrapy class LoginSpider(scrapy.Spider): name = 'login' start_urls = ['https://pidancode.com/login/'] def parse(self, response): # 获取登录所需的 csrf_token csrf_token = response.xpath('//input[@name="csrfmiddlewaretoken"]/@value').extract_first() # 构建登录请求 data = { 'csrfmiddlewaretoken': csrf_token, 'username': 'your_username', 'password': 'your_password' } yield scrapy.FormRequest(url='https://pidancode.com/login/', formdata=data, callback=self.after_login) def after_login(self, response): # 登录成功后继续访问其他页面 yield scrapy.Request(url='https://pidancode.com/profile/', callback=self.parse_profile) def parse_profile(self, response): # 获取登录后可访问页面的内容 yield { 'name': response.xpath('//h1/text()').extract_first() }
在上面的代码中,初始 URL 为登录页面, parse
方法中获取登录所需的 csrf_token ,然后构造登录请求,并在回调函数 after_login
中处理登录成功后的操作。接着通过回调方法 parse_profile
访问登录后可访问的页面及获取页面内容。
3. 编写 Scrapy Settings 配置
在项目的 settings.py 文件中添加以下配置:
ROBOTSTXT_OBEY = False USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' COOKIES_ENABLED = True
将 ROBOTSTXT_OBEY 设置为 False ,以允许访问网站 robots.txt 文件。设置 USER_AGENT ,以模拟流行的浏览器。将 COOKIES_ENABLED 设置为 True ,启用 cookies 功能。
4. 运行登录爬虫
在终端中执行以下命令启动爬虫:
scrapy crawl login
登录成功后,爬虫自动获取 Cookies,并在后续请求中将其携带,以模拟登录状态。可以通过上面的示例代码获取登录后可访问页面的内容,具体实现方式取决于所需抓取的页面结构。
相关文章