start_urls = ['https://image.jpg']
def start_requests(self):
for url in self.start_urls:
request = scrapy.Request(url,callback=self.parse)
yield request
def parse(self, response):
item = GetImgsItem()
# print(response.url)
item['image_urls'] = response.url
yield item
我的蜘蛛现在可以从start_urls下载图像,但是该请求被发送了两次以给出一张图像。 我应该如何在start_requests中将其下载?
问题2: 我在项目中创建了两个蜘蛛(蜘蛛A,蜘蛛B)。在蜘蛛A中,我有一个特定的管道类来处理下载的项目。现在效果很好。
但是后来当我使用蜘蛛B时,它也使用了与蜘蛛A相同的管道类。我应该如何设置管道类,以便蜘蛛A可以独享使用管道类?
答案 0 :(得分:1)
要回答第二个问题,请看一下这篇文章:
How can I use different pipelines for different spiders in a single Scrapy project
您还可以只删除settings.py文件中的管道部分,并在Spider中创建custom_settings。
class SpiderA(scrapy.Spider):
name = 'spider_a'
custom_settings = {
'ITEM_PIPELINES': {
'project.pipelines.MyPipeline': 300
}
}
但是我认为上面文章中显示的示例更加优雅。