这是html
<table id="dataLstSubCat" cellspacing="0" style="border-collapse:collapse;">
<tbody><tr>
<td style="font-weight:normal;font-style:normal;text-decoration:none;white-space:nowrap;">
<a onclick="ShowHideProduct();" id="dataLstSubCat_LnkBtnSubCat_0" href="javascript:__doPostBack('dataLstSubCat$ctl00$LnkBtnSubCat','')">Primers</a>
</td><td style="font-weight:normal;font-style:normal;text-decoration:none;white-space:nowrap;">
<a onclick="ShowHideProduct();" id="dataLstSubCat_LnkBtnSubCat_1" href="javascript:__doPostBack('dataLstSubCat$ctl01$LnkBtnSubCat','')">Intermediates</a>
</td><td style="font-weight:normal;font-style:normal;text-decoration:none;white-space:nowrap;">
<a onclick="ShowHideProduct();" id="dataLstSubCat_LnkBtnSubCat_2" href="javascript:__doPostBack('dataLstSubCat$ctl02$LnkBtnSubCat','')">Finishes</a>
</td>
</tr>
</tbody></table>
现在我要提取表数据(td)文本 就像我要提取文字一样
[入门,中间体,完成]
这是我尝试过的
new_text=driver.find_element_by_xpath(("//table[@id='dataLstSubCat']/tbody/tr"))
new_text.text
以字符串形式而不是列表形式给出o / p
Primers Intermediates Finishes
有什么方法可以完成它。
答案 0 :(得分:1)
要提取表数据 [引物,中间体,完成物”,您可以使用以下任一Locator Strategies:
使用CSS_SELECTOR
:
print([my_text_elem.get_attribute("innerHTML") for my_text_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "table#dataLstSubCat>tbody>tr td>a")))])
使用XPATH
:
print([my_text_elem.get_attribute("innerHTML") for my_text_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//table[@id='dataLstSubCat']/tbody/tr//td/a")))])
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
答案 1 :(得分:0)
一种选择是使用find_elements_by_xpath
,然后使用for loop
将其添加到列表中,例如:
list = []
new_text=driver.find_elements_by_xpath(("//table[@id='dataLstSubCat']/tbody/tr/td"))
for text in new_text:
list.append(text.text)