id//*[@id=“page”]上的xpath查询返回两个元素

2024-04-26 08:14:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试废弃站点ketabejam.ir 我使用python3.4.1,解析使用lxml3.4.1
顺便说一下,我用lxml.html.fromstring方法
当我在我的解释器上加载文档并请求以下查询以获取页数时,我可以处理分页:

s = doc.xpath("//*[@id='page']")

令人惊讶的是,我得到的结果是:

^{pr2}$

我从firebug的最小xpath得到元素的地址, 当我选择普通xpath时,查询运行顺利
是虫子,还是我做错了什么??在


Tags: 方法文档iddocir站点htmlpage
2条回答

通常,您可以通过以下方式解决此问题:

s = doc.xpath("(//*[@id='page'])[1]")

…如果您知道您只需要匹配的第一个节点,并且可以安全地忽略任何后续节点(在本例中这似乎是一个安全的赌注)。在

查看链接页面的页面源代码,页面中正好有两个元素id。最有可能是桌子上的那个,和桌子下面的那个。在

firebug的副本minimalxpath版本基于元素的id工作。它只适用于具有id标记的元素,并且它以以下格式创建xpath-

//*[@id="elementID"]

这就是你得到的。在

{{cd1>页面上应该只有一个元素。似乎firebug的最小xpath依赖于此。在

在您的上下文中,我认为这两个元素都返回相同的链接,因此您可以使用其中一个继续进行刮取。或者,正如您所指出的,您可以使用普通的xpath。在

相关问题 更多 >