我正在使用Scrapy爬取amazon.com上与产品相关的图像。我将如何解析图像数据?

我通常使用XPath。但是,我无法找到图像的XPath(除缩略图外)。例如,这就是我解析标题的方式。

title = response.xpath('//h1[@id="title"]/span/text()').extract()

该项目的链接是:https://www.amazon.com/dp/B01N068GIX?psc=1

最佳答案

似乎可以从页面源代码中提供的JavaScript中提取图像。我使用js2xml库将JavaScript源代码转换为XML(您可以在Scrapinghub的blogpost上了解有关它的更多信息)。然后,可以使用XML创建Selector,使用该ojit_code可以照常提取数据。看一下这个示例蜘蛛:

# -*- coding: utf-8 -*-
import js2xml
import scrapy

class ExampleSpider(scrapy.Spider):
    name = 'example'
    allowed_domains = ['amazon.com']
    start_urls = ['https://www.amazon.com/dp/B01N068GIX?psc=1/']

    def parse(self, response):
        item = dict()
        js = response.xpath("//script[contains(text(), 'register(\"ImageBlockATF\"')]/text()").extract_first()
        xml = js2xml.parse(js)
        selector = scrapy.Selector(root=xml)
        item['image_urls'] = selector.xpath('//property[@name="colorImages"]//property[@name="hiRes"]/string/text()').extract()
        yield item

如果您想对其进行测试,请像这样运行
scrapy runspider example.py -s USER_AGENT="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36"

因为亚马逊似乎基于用户代理字符串来阻止Scrapy。

关于python - 爬取爬取图像数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46517549/

10-10 23:49