python - Scrapy 和图像抓取的问题

标签 python web-scraping scrapy

所以我一直在尝试通过创建一个非常基本的爬虫来学习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)

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

最佳答案

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

我们可以通过将 urlparse 导入到抓取工具中来解决此问题,然后将我们的相对图像 URL 与响应 URL 结合起来,如下所示:

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

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

关于python - Scrapy 和图像抓取的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24406711/

相关文章:

python - scikit learn 是否包含具有连续输入的朴素贝叶斯分类器?

python - f2py - 函数参数的顺序困惑

带有 jsessionid 的 R 网络爬虫

python - Scrapy:如何以特定的json格式输出项目

python - 如何在网格中排列 4 个 Seaborn 图(Python)?

python - Scrapy - 删除列表输出中的 html 标签

go - 如何使用 Golang 单击按钮进行 Web 抓取

python - 构造Scrapy Request对象时是否可以指定任何方法作为回调?

javascript - 如何从 Xpath 中的 javascript 事件处理程序获取链接?

visual-studio - 如何在 Visual Studio 中使用 scrapy