2017-12-27 515 views
0

我从Scopus网站收集我的强制性数据并将其保存在名为“s”的列表中。但所有的数据都保存在s [1]中。我的代码是:为什么Web元素只在一个列表中的一个元素?

s=[] 
document=driver.find_elements_by_xpath("""//*[@id="srchResultsList"]/tbody""") 
for i in document: 
    s.append(i.text) 

我该怎么办?我在python 2.7中使用了selenium包。

+3

如果你需要得到你需要通过'tr'遍历表数据(行)和'td'(列)imediate结果不是'tbody' –

+0

发布一个链接到页面,并解释更多关于你到底在找什么。给出一个相关HTML的例子,你期望从HTML中获得什么,以及你用来获取HTML的代码。 – JeffC

回答

1

我注意到你试图查询一个tbody表标记。它不是原因?通常,表格中只有一个tbody标签,并且它会产生一个独特的元素。

你没有告诉我们你是否试图返回并保存你的var所有tr元素,或所有的td元素,或者甚至是他们内部的另一种标记,但无论你想返回什么,你都需要改变你的选择器。让我们假设你的xpath返回一个tbody元素,里面有大量的IWebElements:tr,td,a,span ...但是你的选择器只要求tbody元素,而不是内部元素,你明白吗?

只是尝试将您的xpath更改为//*[@id="srchResultsList"]/tbody/tr如果您想要所有tr元素exept标头tr;

您还可以使用以下xpath //*[@id="srchResultsList"]/tbody//td,它将返回所需的所有td元素。

在另一种情况下,如果你想里面tbody的所有tr和td元素,你可以查询方式: //*[@id="srchResultsList"]/tbody/tr | //*[@id="srchResultsList"]/tbody//td

您还可以更改或创建subqueryes返回你的愿望的所有元素,但你需要指定它的选择:硒只接受没有孩子

+0

谢谢你的完整答案。你的回应很好。但是在列表的索引中有一个错误。我必须有一个200罗斯列表,但是,列表有202行。你对此有何看法? –

+0

我只需要了解你想要什么:硒内返回的值是错误的?或者你想要采取指定数量的元素? –

+0

无论如何,你总是可以使用chrome控制台窗口来测试你所有的xpath和cssSelectors:尝试使用'$(“your-css-selector”)'或'$ x(“your-xpath”)''。我不知道另一个浏览器是否支持xpath选择器,因为它是一个控制台功能,而不是js或jquery。但铬肯定支持 –

相关问题