2017-12-27 506 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。但鉻肯定支持 –

相關問題