【问题标题】:Issue with Scrapy and image scrapingScrapy 和图像抓取问题
【发布时间】:2014-06-25 10:54:21
【问题描述】:

所以我一直在尝试通过创建一个非常基本的爬虫来学习 Python。目前,我所有的抓取都按预期工作,除了图像:

我已在我的 settings.py 中添加了一个图像存储,我通过蜘蛛成功提取了图像的 URL,但它当前没有保存任何图像。

图片URL提取行如下:

snowboard['image_URL'] = ''.join(item.xpath('li[@class="productImage"]/a/img/@data-original').extract())

这将产生类似这样的东西:

"image_URL": "/zoom/858553/230"

在我的 items.json 中。

到目前为止,除了没有图像保存到我的图像存储区之外,一切看起来都还不错。作为参考,这是我的项目管道:

class SnowboardPipeline(object):
    def process_item(self, item, spider):
        return item

    def get_media_requests(self, item, info):
        for imageURL in item['image_URL']:
        yield Request(imageURL)

我很好奇这是否与没有异常的图像有关,或者当涉及到下拉图像时,我已经查看了文档中非常明显的内容。

【问题讨论】:

标签: python web-scraping scrapy


【解决方案1】:

所以对于那些好奇的人来说,我的问题本质上是图像管道需要完整的 URL,而不仅仅是扩展。事后看来,这是显而易见的。

我们可以通过将 urlparse 导入到爬虫中来解决这个问题,然后将我们的相对图像 URL 与响应 URL 连接起来,如下所示:

snowboard['image_urls'] = [urlparse.urljoin(response.url, snowboard['URL'])]

这将产生图像的完整 URL。然后我遇到了缺少 jpeg 解码器的问题,但通过安装相关依赖项并重新安装 PIL 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多