如何变成抓蜘蛛从起始网址下载图像?

时间:2020-04-26 15:59:26

标签: python scrapy web-crawler

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可以独享使用管道类?

1 个答案:

答案 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
        }
    }

但是我认为上面文章中显示的示例更加优雅。