scrapy - 如何使用scrapy模拟下拉选择和更新表加载?
问题描述
我正在尝试从investing.com/equities页面上的“道琼斯工业平均指数”下拉列表开始加载有关investing.com中每个股票页面的信息
我一直在考虑使用scrapy
options = response.css("select[class=stocksFilter] option[id=166]")
但这并不模拟选择动作。
在选择操作之后,我将在#cross_rate_markets_stocks_1 中的表格项目中逐一浏览,并递归地爬取那些股票页面
你能指出如何模拟点击动作吗?
解决方案
选择动作是用户与浏览器 UI 的交互,但scrapy不呈现网页,我们无法模拟用户交互或使用它运行 Javascript。但是,如果您对通过模拟用户交互进行爬行感兴趣,那么selenium可能是您的好工具。
回到问题,如果我们要使用scrapy进行抓取,我们应该关注发送到/由目标网站发送的请求和响应,您可以将它们记录在浏览器的开发者工具中。打开开发者工具后,点击下拉菜单,可以看到对应的请求发送到了这个url:
https://cn.investing.com/equities/StocksFilter?noconstruct=1&smlID=0&sid=&tabletype=price&index_id=166
这是一个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()'
推荐阅读
- r - 仅在闪亮的应用程序中准备好表格输出时才显示框
- arrays - 滚动时如何在tableview中添加20 -20行的循环?
- plsql - 具有联合的 harcode 行
- postgresql - 相当于 PostgreSQL 中的 UNIQUE IDENTIFIER
- php - 为什么php不能打印mysql数据库中的数据?
- ios - 调用注释来填充 TableView:更正代码错误
- php - php 类到 Json 预计只返回设置值
- c# - 为什么找不到程序集的模块?
- php - 在 IIS 上使用 Windows 身份验证的 PHP opendir() 授权问题
- c# - 将“Interop.zkemkeeper.dll”导入 WCF 服务时出错