在 Scrapy 中在一个蜘蛛中有多个解析方法是不是正确?
Posted
技术标签:
【中文标题】在 Scrapy 中在一个蜘蛛中有多个解析方法是不是正确?【英文标题】:Is it correct in Scrapy to have multiple parse methods in one spider?在 Scrapy 中在一个蜘蛛中有多个解析方法是否正确? 【发布时间】:2022-01-23 01:59:20 【问题描述】:在 Scrapy 中在一个蜘蛛中有多个解析方法是否正确?
看起来像:
import scrapy
class FooSpider(scrapy.Spider):
name = 'foo'
start_urls = ['https://example.com']
def parse(self, response):
...
yield 'foo': foo
def parse(self, response):
...
yield 'bar': bar
【问题讨论】:
【参考方案1】:不,但您可以创建不同的方法并从start_requests
调用它们。
import scrapy
class FooSpider(scrapy.Spider):
name = 'POC'
start_urls = ['https://scrapingclub.com/exercise/detail_basic/']
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url=url, callback=self.get_title, dont_filter=True)
yield scrapy.Request(url=url, callback=self.get_price, dont_filter=True)
def get_title(self, response):
yield 'title': response.xpath('//h3/text()').get()
def get_price(self, response):
yield 'price': response.xpath('//div[@class="card-body"]/h4/text()').get()
【讨论】:
好像只运行第一种方法,没有运行第二种方法。 @Elias 我忘了添加dont_filter=True
,查看编辑。
干得好!谢谢。以上是关于在 Scrapy 中在一个蜘蛛中有多个解析方法是不是正确?的主要内容,如果未能解决你的问题,请参考以下文章