Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从a迭代读取特定元素<;表>;使用Selenium for Python_Python_Selenium_Selenium Webdriver_Web Scraping_Webdriver - Fatal编程技术网

从a迭代读取特定元素<;表>;使用Selenium for Python

从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

我正在尝试从该表中读取定期更改的信息。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...">
我正在尝试读取每个唯一的
部分所需的文本,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