我正在尝试从链接https://www.moneycontrol.com/mutual-funds/canara-robeco-blue-chip-equity-fund-direct-plan/portfolio-holdings/MCA212enter image description here上的特定表中提取数据
HTML中的表ID是-equityCompleteHoldingTable请参考上面的屏幕截图,并帮助从网站表中获取股票数据作为字典。
谢谢。
- 我所尝试的**在Scrapy Shell中,我正在尝试以下命令-
scrapy shell 'https://www.moneycontrol.com/mutual-funds/canara-robeco-蓝筹股-股票-基金-直接计划/投资组合-控股/MCA212'
table = response.xpath('//*[@id="equityCompleteHoldingTable"]')
rows = table.xpath('//tr')
row = rows[2]
row.xpath('td//text()')[0].extract()
- --〉返回"股票数量"。这里提取的数据来自上面网页的另一个表。
我发现这个表正在使用的类也在其他表中使用。其中一个表实际上返回了数据"股票数量"。
- 我所期望的**我期望数据来自equityCompleteHoldingTable表(上面的屏幕截图)
1条答案
按热度按时间khbbv19g1#
您的主要问题是没有使用相对XPath表达式。
例如,
rows = table.xpath("//tr")
是一个绝对xpath路径。无论选择器嵌套得有多深,绝对路径都是从页面的根开始分析的。相对路径查询从当前选择器元素开始解析。要使用相对xpath表达式,您只需添加
.
作为第一个字符,类似于文件系统相对路径。例如:rows = table.xpath(".//tr")
记住这一点,你可能会有更多的运气与以下: