Python Selenium - 从 Class 中获取 Link

Python Selenium - Get Link from Within a Class

我正试图从下面的 HTML 中抓取 href,但我需要第二个数据 class 来识别 href:

<tr>
<td class="data">
    <a target="_new" title="Title" href="https://somesite.com/file_to_scrape.pdf">Scraped Class</a>
<br>
</td>
<td class="data">Text to Identify Above Link</td>
<td class="data">Not relevant text</td>
</tr>

我做的第一件事是拉回所有名为 data:

的 classes 的列表
ls_class = driver.find_elements_by_class_name("data")

但是当我遍历时:

for clas in ls_class:
   print(clas.text)
   print(clas.get_attribute('href'))

打印出来的是:

Scraped Class
None
Text to Identify Above Link
None
Not Relevant Text
None

当出现在 data class 中时,如何获取嵌套的 href

而不是得到

ls_class = driver.find_elements_by_class_name("data")

可以直接领取

elements = driver.find_elements_by_xpath("//td[@class='data']//a")
for element in elements:
   print(element.text)
   print(element.get_attribute('href'))

UPD
我想你可以通过这段代码直接得到想要的元素:

element = driver.find_elements_by_xpath("//tr[.//td[@class='data'][text()='Text to Identify Above Link']//td[@class='data']//a[@href]")
print(element.get_attribute('href'))

我使用发布的解决方案使其工作 here:

 ls_class = driver.find_elements_by_xpath("//td[@class='data']")

 for clas in ls_class:
     print(clas.text)
     try:
         print(clas.find_element_by_css_selector('a').get_attribute('href'))
     except:
         print("No Link")

现在我的输出是:

Scraped Class
https://somesite.com/file_to_scrape.pdf
Text to Identify Above Link
No Link
Not Relevant Text
No Link