首页 > 解决方案 > 为什么我不能使用 scrapy 选择亚马逊页面中的某些元素?

问题描述

我正在尝试从下一页解析亚马逊标准标识号 (ASIN)。

https://www.amazon.com/dp/B075GYWPCJ

但是,我无法从scrapy响应中选择包含 ASIN 的表。如何选择表格以便解析表格中的数据?

import scrapy
from scrapy.crawler import CrawlerProcess

class AmazonSpider(scrapy.Spider):
    name = 'amazon.com'
    def start_requests(self):
        yield scrapy.Request('https://www.amazon.com/dp/B075GYWPCJ', self.parse)
    def parse(self, response):
        # This works.. :)
        print(response.xpath('//table[@id="HLCXComparisonTable"]'))
        # This doesn't work.. :(
        print(response.xpath('//table[@id="productDetails_detailBullets_sections1"]'))

process = CrawlerProcess()
process.crawl(AmazonSpider)
process.start()

标签: pythonhtmlxpathscrapyselector

解决方案


在亚马逊上,很多东西都是动态加载的。当您打开页面时,您尝试抓取的表格不会加载到 DOM。您需要以某种方式触发页面以加载该内容以获取它。


推荐阅读