如何解决XPath选择器返回空列表
从第一表和第二表获取数据没有问题,但是当我失败时,xpath仅返回空列表。
甚至试图将响应保存在文件中
scrapy fetch --nolog "https://www.tibia.com/charactertrade/?subtopic=currentcharactertrades&page=details&auctionid=3475&source=overview" > response.html
对于具有技巧的桌子,一切都很好
sword = response.xpath('//div [@class="AuctionHeader"]/a/text()').get()
但是在获取例如黄金价值时,我只会得到一个空列表:
gold = response.xpath('/html/body/div[3]/div[1]/div[2]/div/div[2]/div/div[1]/div[2]/div[5]/div/div/div[3]/div[2]/div[2]/table/tbody/tr/td/div/table/tbody/tr[2]/td/div[2]/div/table/tbody/tr[3]/td/div/text()').get()
在chrome / firefox中,两个选择器都可以正常运行,但只能刮擦第一个选择器
我知道用javascript更新数据可能会出现一些问题,但这种情况看起来并不像
解决方法
看起来好像不是JavaScript问题。认为您没有正确设置XPATH选择器。最好尽可能具体一些,不要向下使用多个节点。在这里,我们可以选择属性https://panshubeimedia.blob.core.windows.net/asset-4aec18e9-280e-49f4-99eb-1e90b66de393/Thumbnail000001.jpg
来获取所需的表。如果需要,您可以在此处选择所需的每个表格。
代码示例
TableContent
输出
table = response.xpath('//table[@class="TableContent"]')[3]
gold_title = table.xpath('tr/td/span/text()')[2].get()
gold_value = table.xpath('tr/td/div/text()')[2].get()
解释
使用类属性TableContent,可以选择所需的表。在这里,我选择了带有黄金值的表格。然后,我选择了每一行以及具有黄金值的特定元素。这些值隐藏在span和div元素后面。 'Gold: '
'31,030'
返回字符串,get()
返回列表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。