Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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
pythons lxml.html,一次抓取所有_Python_Lxml.html - Fatal编程技术网

pythons lxml.html,一次抓取所有

pythons lxml.html,一次抓取所有,python,lxml.html,Python,Lxml.html,使用lxml.html,我能够使用pid获取数据 fromstring(source).xpath('/html/body/article/section/div[1]/div[2]/p[2]')[0]。get('data-pid') 但是,它只返回其中一个(在本例中为4559733570)。我记得我能一次抓到所有的东西,但我不记得怎么抓到的。谁能给我指一下正确的方向吗 HTML代码如下所示: xpath,直接返回所有值 假设您关心所有p元素中的属性数据pid: >>> fro

使用lxml.html,我能够使用pid获取数据
fromstring(source).xpath('/html/body/article/section/div[1]/div[2]/p[2]')[0]。get('data-pid')

但是,它只返回其中一个(在本例中为4559733570)。我记得我能一次抓到所有的东西,但我不记得怎么抓到的。谁能给我指一下正确的方向吗

HTML代码如下所示:

xpath,直接返回所有值 假设您关心所有
p
元素中的属性
数据pid

>>> fromstring(source).xpath("//p/@data-pi")

将返回所需内容。

从png和xpath查询中,您感兴趣的所有
元素似乎都嵌套在相同的
中。xpath查询
/html/body/article/section/div[1]/div[2]/p[2]
将只返回所选div中的第二个
元素(
[2]
)。如果要在div中显示所有段落,请使用
/html/body/article/section/div[1]/div[2]/p

[ p.get("data-pid") for p in fromstring(source).xpath('/html/body/article/section/div[1]/div[2]/p') ]

仍然打印第一个元素only@user42992我通过删除最后一个索引修改了xpath,并添加了另一个xpath选择器,它可能会选择您需要的内容(全部为“p”)元素具有
数据pid
@user42992最终我将解决方案简化为单个xpath。我明白了您的意思。我得到了错误
AttributeError:“list”对象没有属性“get”
太好了!我修复了代码,粘贴时忘了删除.get。