python - 为什么我不能使用 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()
解决方案
在亚马逊上,很多东西都是动态加载的。当您打开页面时,您尝试抓取的表格不会加载到 DOM。您需要以某种方式触发页面以加载该内容以获取它。
推荐阅读
- plsql - 过程创建时出现编译错误。付款计数(l_p_count);*
- python - 运行 pytest 时出现 ModuleNotFoundError
- reactjs - 如何在 React 中处理包含多个字段的表单
- react-native - 堆栈导航器中的底部选项卡导航器
- javascript - 检索两个数组中的共同项目
- python - 如何使用 httpx AsynCclient 在 URL 中执行带有下划线“_”的请求
- scala - 为什么这个子类必须实现一个 final 方法?
- .net - 通过 SSL 调用 SOAP 在 ASP.NET 网站中有效,但在类库(或控制台应用程序)中无效
- python - 如果值在列表中,则创建虚拟变量
- c# - 具有附加状态的自定义 Task-Like 类