从a迭代读取特定元素<;表>;使用Selenium for Python
我正在尝试从该表中读取定期更改的信息。HTML如下所示:从a迭代读取特定元素<;表>;使用Selenium for Python,python,selenium,selenium-webdriver,web-scraping,webdriver,Python,Selenium,Selenium Webdriver,Web Scraping,Webdriver,我正在尝试从该表中读取定期更改的信息。HTML如下所示: <table class="the_table_im_reading"> <thead>...</thead> <tbody> <tr id="uc_6042339"> <td class="expansion">...</td> <td> <div id="card_6042339
<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...">
我正在尝试读取每个唯一的
部分所需的文本,id=uc\u唯一编号会定期更改,因此我无法使用按id查找元素
有没有办法到达该元素并读取该特定文本?看起来您可以通过锚元素链接(href属性)进行搜索,因为我猜这不会改变 通过xpath:
yourText = table_element.find_element_by_xpath(.//a[@href='/blahsomelink']).text
更新
OP提到他的链接也在改变(每次呼叫?),这意味着第一种方法不适合他
如果需要第一行元素的文本,可以尝试以下操作:
yourText = table_element.find_element_by_xpath(.//tr[1]//a[@class='cl']).text
例如,如果您知道链接元素始终位于第一行的第二个数据元素中,并且只有一个链接元素,则可以执行以下操作:
yourText = table_element.find_element_by_xpath(.//tr[1]/td[2]//a).text
除非你提供更详细的要求,说明你真正在寻找什么,否则到目前为止,这就足够了
另一个更新
OP提供了有关其要求的更多信息:
我正在尝试获取每一行的文本
假设每个tr元素中只有一个类别为cl的锚元素,您可以执行以下操作:
elements = table_element.find_elements_by_xpath(.//tr//a[@class='cl'])
for element in elements:
row_text = element.text
现在,您可以对所有这些文本执行任何需要的操作…看起来您有一些选择 如果您只需要第一个
A
,那么它可能非常简单
table_element.find_element_by_css_selector("a.cl")).text
或者更具体一点
table_element.find_element_by_css_selector("div.cb > a.cl")).text
如果您想要所有的
A
s,请尝试上面的find\u elements.*
版本。对不起,我还应该指定该链接对于编辑的tr是唯一的。那么您总是搜索第一行中的文本吗?还是希望所有行的文本都具有唯一ID?是否有不具有这些ID的行?所有具有唯一ID的行。所有行都有ID,结构与我问题中的第一行相同。我正在尝试获取每一行的文本。
table_element.find_element_by_css_selector("div.cb > a.cl")).text