以下是一个示例代码,演示如何使用Scrapy发送不同的请求,但获得相同的输出值:
import scrapy
class MySpider(scrapy.Spider):
name = 'my_spider'
start_urls = ['http://example.com/page1', 'http://example.com/page2', 'http://example.com/page3']
def parse(self, response):
# 在这里编写解析响应的代码
# 可以使用XPath或CSS选择器提取所需的数据
# 提取页面标题
title = response.xpath('//title/text()').get()
# 创建一个新的请求,并将页面标题作为请求的meta数据传递
yield scrapy.Request(url='http://example.com/other', callback=self.parse_other, meta={'title': title})
def parse_other(self, response):
# 在这里编写解析其他请求的代码
# 可以使用XPath或CSS选择器提取所需的数据
# 获取之前请求的页面标题
title = response.meta['title']
# 输出页面标题和其他请求的结果
print('页面标题:', title)
print('其他请求的结果:', response.body)
在上面的代码中,start_urls
列表包含了需要发送的不同请求。在parse
方法中,我们使用XPath提取了页面的标题,并将其作为meta数据传递给了后续的请求。然后,在parse_other
方法中,我们通过response.meta['title']
获取之前请求的页面标题,并输出页面标题和其他请求的结果。
这样,无论发送了多少个不同的请求,它们都会通过parse_other
方法获得相同的输出值。