【问题标题】:Optimal way to find element containing`data-superid="picture-link"?查找包含`data-superid="picture-link" 的元素的最佳方法?
【发布时间】:2021-01-02 05:48:00
【问题描述】:

我要查找的元素如下所示:

<a href="pic:/82eu92e/iwjd/" data-superid="picture-link">

之前我在页面中找到了所有href,然后通过查找哪个具有文本pic: 来找到正确的href,但由于某些页面的滚动画廊导致陈旧元素,我不能再这样做了。

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    你可以试试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,可能是因为我篡改了它以使图片值成为通配符。用其他方法搞定了。
    【解决方案2】:

    您可以按属性过滤:

    driver.find_element_by_xpath('//a[@data-superid="picture-link"]')
    

    关于滚动部分,here 是之前提出的一个可以帮助您的问题。

    【讨论】:

    • 顺便说一句,我可以很好地滚动页面!我的意思是有一个画廊会自动向左/向右滚动,这会导致过时的元素。
    【解决方案3】:

    要使用 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"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-02
      • 2022-06-15
      • 2014-04-19
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      相关资源
      最近更新 更多