【发布时间】:2021-01-02 05:48:00
【问题描述】:
我要查找的元素如下所示:
<a href="pic:/82eu92e/iwjd/" data-superid="picture-link">
之前我在页面中找到了所有href,然后通过查找哪个具有文本pic: 来找到正确的href,但由于某些页面的滚动画廊导致陈旧元素,我不能再这样做了。
【问题讨论】:
我要查找的元素如下所示:
<a href="pic:/82eu92e/iwjd/" data-superid="picture-link">
之前我在页面中找到了所有href,然后通过查找哪个具有文本pic: 来找到正确的href,但由于某些页面的滚动画廊导致陈旧元素,我不能再这样做了。
【问题讨论】:
你可以试试beautifulsoup + selenium,比如:
from bs4 import BeautifulSoup
text = '''<a href="pic:/82eu92e/iwjd/" data-superid="picture-link">'''
# Under your circumstance, you need to use:
# text = driver.page_source
soup = BeautifulSoup(text, "html.parser")
print(soup.find("a", attrs={"data-superid":"picture-link"}))
结果:
<a data-superid="picture-link" href="pic:/82eu92e/iwjd/"></a>
【讨论】:
None,可能是因为我篡改了它以使图片值成为通配符。用其他方法搞定了。
您可以按属性过滤:
driver.find_element_by_xpath('//a[@data-superid="picture-link"]')
关于滚动部分,here 是之前提出的一个可以帮助您的问题。
【讨论】:
要使用 data-superid="picture-link" 提取 href 值,请使用以下 css 选择器或 xpath。
links=driver.find_elements_by_css_selector("a[data-superid='picture-link'][href]")
for link in links:
print(link.get_attribute("href"))
或
links=driver.find_elements_by_xpath("//a[@data-superid='picture-link'][@href]")
for link in links:
print(link.get_attribute("href"))
【讨论】: