我试图从以下HTML中抓取href
,但我需要第二个数据类来识别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
我怎么能得到嵌套的href
时,存在于data
类?
而不是得到
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'))
乌利希期刊指南
我认为你可以通过以下代码直接获得所需的元素:
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'))
我得到了它的工作使用解决方案张贴在这里:
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