首页 > 解决方案 > 如何使用scrapy模拟下拉选择和更新表加载?

问题描述

我正在尝试从investing.com/equities页面上的“道琼斯工业平均指数”下拉列表开始加载有关investing.com中每个股票页面的信息

我一直在考虑使用scrapy

options = response.css("select[class=stocksFilter] option[id=166]")

但这并不模拟选择动作。

在选择操作之后,我将在#cross_rate_markets_stocks_1 中的表格项目中逐一浏览,并递归地爬取那些股票页面

你能指出如何模拟点击动作吗?

标签: scrapycss-selectorsweb-crawler

解决方案


选择动作是用户与浏览器 UI 的交互,但scrapy不呈现网页,我们无法模拟用户交互或使用它运行 Javascript。但是,如果您对通过模拟用户交互进行爬行感兴趣,那么selenium可能是您的好工具。

回到问题,如果我们要使用scrapy进行抓取,我们应该关注发送到/由目标网站发送的请求响应,您可以将它们记录在浏览器的开发者工具中。打开开发者工具后,点击下拉菜单,可以看到对应的请求发送到了这个url:

https://cn.investing.com/equities/StocksFilter?noconstruct=1&smlID=0&sid=&tabletype=price&index_id=166

截图1

这是一个GET请求,index_id分配了选定的股票 ID,您可以从https://investing.com/equities的 HTML 元素中获取股票 ID 和名称

'xpath of stock ID:   //*[@id="stocksFilter"]/option/@id'
'xpath of stock Name: //*[@id="stocksFilter"]/option/text()'

推荐阅读