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
我正试图从下面的 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
:
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