我正在尝试使用Python中的Selenium和XPath来获取表中的“SIRET”行。 我尝试过不同类型的XPath,但我无法做到。 一个问题是“class =”reportRow“”元素正在动态变化,并且在位置编号后不能报废。 “SIRET”原始和他的“td类”子元素值,可以在“SIRET”文本之后或以其他方式报废?
这是我访问网站时所做的手动步骤:
该网站仅包含根域。 通过登录数据访问网站后,我输入一个搜索条件,打开一个页面,我必须单击一个链接,打开一个弹出窗口的表格。 该表包含4行和8列,第一行包含列的名称,另外3行包含数据作为“SIRET”。 这3行的位置会定期更改,具体取决于从特定服务器收到的数据。 这就是为什么我想通过“SIRET”文本来填补这一行和他的价值观。
我的最终刮削数据应如下所示:SIRET 646 90 0.2%$ 2.94 1.03 0.07 4.52。
非常感谢您的投入。
<div class="table_container">
<table>
<tbody>
<tr class="reportHead">.....</tr></tbody>
<tbody>
<tr class="reportRow ">....</tr>
<tr class="reportRow ">....</tr>
<tr class="reportRow ">
<td data-actual="SIRET" class="reportKeyword">SIRET</td>
<td class="td2">646</td>
<td class="td1">90</td>
<td class="rcr">0.2%</td>
<td class="td1">$2.94</td>
<td class="td1">1.03</td>
<td class="td1">0.07</td>
<td class="td1 rctl">4.52</td>
</tr>
</tbody>
<tfoot style="display: none;">....</tfoot>
</table>
答案 0 :(得分:2)
您可以像这样使用xpath
SIRET= driver.find_element_by_xpath("//td[@data-actual='SIRET']")
然后您可以使用.text
操作来获取文本
如果数据在动态变化,则必须使用
SIRET= driver.find_element_by_xpath("//td[@class='reportKeyword']")
答案 1 :(得分:0)
如果我已正确理解了这个问题,那么您正试图从动态变化的"SIRET"
节点获取字符串<td>
。为此,您可以使用以下代码行:
print(driver.find_element_by_xpath("//td[@class='reportKeyword']").get_attribute("innerHTML"))
答案 2 :(得分:0)
奇怪。实际上,解决方案并不那么复杂:
driver.find_element_by_xpath("//td[@data-actual='SIRET']/../td")