我正在尝试从此表中读取定期更改的信息。 HTML看起来像这样:
<table class="the_table_im_reading">
<thead>...</thead>
<tbody>
<tr id="uc_6042339">
<td class="expansion">...</td>
<td>
<div id="card_6042339_68587" class="cb">
<a href="/uniquelink" class="cl" onmouseover="cardHover('somecard');" onmouseout="cardOut()">TEXT I NEED TO READ</a>
</td>
<td>...</td>
more td's
</tr>
<tr id="uc_6194934">...</tr>
<td class="expansion">...</td>
similar as the first <tr id="uc...">
我能够使用以下方式进入桌面:
table_xpath = "//*[@id="content-wrapper"]/div[5]/table"
table_element = driver.find_element_by_xpath(table_xpath)
我正在尝试阅读每个唯一<tr id="uc_unique number">.
我需要阅读部分的文本.id = uc_unique数字会定期更改,所以我不能使用find元素。
是否有办法覆盖该元素并阅读该特定文本?
答案 0 :(得分:3)
看起来你可以通过anchor-element链接(href-attribute)进行搜索,因为我猜这不会改变。
通过xpath:
yourText = table_element.find_element_by_xpath(.//a[@href='/blahsomelink']).text
如果你想要第一个row-element的文本,你可以试试这个:
yourText = table_element.find_element_by_xpath(.//tr[1]//a[@class='cl']).text
如果你知道例如link元素总是在第一行的第二个数据元素中并且只有一个link-element,那么你可以这样做:
yourText = table_element.find_element_by_xpath(.//tr[1]/td[2]//a).text
除非你对你真正想要的东西提供更详细的要求,否则到目前为止这已经足够......
我想在每一行中获取文字。
鉴于在每个tr元素中只有一个具有类cl的锚元素,您可以执行以下操作:
elements = table_element.find_elements_by_xpath(.//tr//a[@class='cl'])
for element in elements:
row_text = element.text
现在你可以用所有这些文本做任何你想做的事......
答案 1 :(得分:1)
看起来你有几个选择。
如果你想要的只是第一个A
,它可能就像
table_element.find_element_by_css_selector("a.cl")).text
或更具体的
table_element.find_element_by_css_selector("div.cb > a.cl")).text
如果您想要所有A
,请尝试以上find_elements_*
版本。