Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python id/*[@id=";page";]上的xpath查询返回两个元素_Python_Html_Xpath_Web Scraping_Lxml - Fatal编程技术网

Python id/*[@id=";page";]上的xpath查询返回两个元素

Python id/*[@id=";page";]上的xpath查询返回两个元素,python,html,xpath,web-scraping,lxml,Python,Html,Xpath,Web Scraping,Lxml,我正试图废弃这个网站 我使用的是python3.4.1,对于解析,我使用lxml3.4.1 顺便说一下,我用lxml.html.fromstring方法解析了它 当我将文档加载到我的解释器上并请求以下查询以获得页数时,我可以处理分页: s = doc.xpath("//*[@id='page']") 令人惊讶的是,我得到了这样的结果: >>>len(s) == 2 True 我从firebug的最小xpath中得到了元素的地址, 当我选择普通xpath时,查询运行平稳

我正试图废弃这个网站 我使用的是python3.4.1,对于解析,我使用lxml3.4.1
顺便说一下,我用lxml.html.fromstring方法解析了它
当我将文档加载到我的解释器上并请求以下查询以获得页数时,我可以处理分页:

s = doc.xpath("//*[@id='page']")
令人惊讶的是,我得到了这样的结果:

>>>len(s) == 2
True
我从firebug的最小xpath中得到了元素的地址, 当我选择普通xpath时,查询运行平稳

这是一个bug,还是我做错了什么???

查看您链接的页面的页面源代码,页面中正好有两个元素具有
id
。最有可能的一个在桌子顶部,另一个在桌子底部

firebug的副本
minimal
xpath版本基于元素的
id
工作。它仅适用于具有
id
标记的元素,并且它以-

//*[@id="elementID"]
这就是你得到的

理想情况下,在每个html页面中,只有一个元素具有特定的
id
,即
id
在整个页面中应该是唯一的。似乎firebug的最小xpath依赖于此


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

查看您链接的页面的页面源代码,页面中正好有两个id为
的元素。最有可能的一个在桌子顶部,另一个在桌子底部

firebug的副本
minimal
xpath版本基于元素的
id
工作。它仅适用于具有
id
标记的元素,并且它以-

//*[@id="elementID"]
这就是你得到的

理想情况下,在每个html页面中,只有一个元素具有特定的
id
,即
id
在整个页面中应该是唯一的。似乎firebug的最小xpath依赖于此


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

查看您链接的页面的页面源代码,页面中正好有两个id为
的元素。最有可能的一个在桌子顶部,另一个在桌子底部

firebug的副本
minimal
xpath版本基于元素的
id
工作。它仅适用于具有
id
标记的元素,并且它以-

//*[@id="elementID"]
这就是你得到的

理想情况下,在每个html页面中,只有一个元素具有特定的
id
,即
id
在整个页面中应该是唯一的。似乎firebug的最小xpath依赖于此


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

查看您链接的页面的页面源代码,页面中正好有两个id为
的元素。最有可能的一个在桌子顶部,另一个在桌子底部

firebug的副本
minimal
xpath版本基于元素的
id
工作。它仅适用于具有
id
标记的元素,并且它以-

//*[@id="elementID"]
这就是你得到的

理想情况下,在每个html页面中,只有一个元素具有特定的
id
,即
id
在整个页面中应该是唯一的。似乎firebug的最小xpath依赖于此


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

您通常可以通过执行以下操作来解决此问题:

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

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

您通常可以通过执行以下操作来解决此问题:

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

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

您通常可以通过执行以下操作来解决此问题:

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

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

您通常可以通过执行以下操作来解决此问题:

s = doc.xpath("(//*[@id='page'])[1]")
…如果您知道您确实只需要匹配的第一个节点,并且可以安全地忽略任何后续节点(在本例中,这似乎是一个安全的赌注)