【问题标题】:Downloading images in scrapy在scrapy中下载图片
【发布时间】:2013-04-16 18:39:28
【问题描述】:

我正在尝试通过 scrapy 下载图像。这是我的不同文件:

items.py

class DmozItem(Item):
        title = Field()
        image_urls = Field()
        images = Field() 

settings.py

BOT_NAME = 'tutorial'

SPIDER_MODULES = ['tutorial.spiders']
NEWSPIDER_MODULE = 'tutorial.spiders'
ITEM_PIPELINES = ['scrapy.contrib.pipeline.images.ImagesPipeline']
IMAGES= '/home/mayank/Desktop/sc/tutorial/tutorial'

蜘蛛

class DmozSpider(BaseSpider):
    name = "wikipedia"
    allowed_domains = ["wikipedia.org"]
    start_urls = [
        "http://en.wikipedia.org/wiki/Pune"
    ]

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        items = []
        images=hxs.select('//a[@class="image"]')
        for image in images:
                item = DmozItem()
                link=image.select('@href').extract()[0]
                link = 'http://en.wikipedia.com'+link
                item['image_urls']=link
                items.append(item)

尽管进行了所有这些设置,我的管道仍未激活。请帮助。我是这个框架的新手。

【问题讨论】:

  • 你是否安装了 PIL(Python Imaging Library)?这是图片下载的先决条件:doc.scrapy.org/en/latest/topics/images.html
  • 你怎么知道管道没有被激活?您能否包含一些日志输出,例如:2013-04-16 16:40:31-0500 [scrapy] DEBUG: Enabled item pipelines: ImagesPipeline

标签: image download scrapy imagedownload


【解决方案1】:

首先,settings.py:IMAGES -> IMAGES_STORE

其次,spider:您应该返回一个item,以便ImagesPipeline 可以下载这些图像。

item = DmozItem()
image_urls = hxs.select('//img/@src').extract()
item['image_urls'] = ["http:" + x for x in image_urls]
return item

【讨论】:

    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2018-12-15
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多