【问题标题】:Selenium not finding all the elements硒找不到所有元素
【发布时间】:2021-10-10 18:22:42
【问题描述】:

Selenium 无法找到网页中的所有标签。它只找到一个,但有两个,我需要这两个来使我的脚本工作。这是link。我尝试使用 WebDriverWait,但它仍然只返回了一个标签。我尝试搜索不同的 div,但我一直只返回一个。我认为这与第二个 div 具有的某些类有关,而第一个没有,但我真的卡住了。

Here's the HTML code.

full_image_link = driver.find_element_by_class_name('sc-1qpw8k9-3')
full_image_link.click()

full_image_link_ = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located(
        (By.CLASS_NAME, 'sc-1qpw8k9-3')
    )
)

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

    您可以使用api检索图片链接,无需抓取:

    import requests
    
    r = requests.get('https://www.pixiv.net/ajax/illust/93333481/pages?lang=en').json()
    image_links = [i['urls']['original'] for i in r['body']]
    

    结果:

    ['https://i.pximg.net/img-original/img/2021/10/10/23/35/09/93333481_p0.jpg',
     'https://i.pximg.net/img-original/img/2021/10/10/23/35/09/93333481_p1.jpg']
    

    【讨论】:

    • 它有效,但不是我想要的。使用我提供的链接,我需要在图像中单击,因为当我这样做时,隐藏的 div 将显示指向图像全分辨率的链接。问题是Selenium在我点击后找不到这个div。以及您是如何通过 ajax 获得此链接的?
    • 好的,我猜你需要original url。我已经更新了答案。您可以使用print(r) 检查完整的 json。您可以通过检查 network activity 来检查 api 调用
    • 谢谢你,它工作得很好!它甚至清理了我的代码。再次感谢。如果你不介意,我可以问你一些关于这个 API 链接的事情吗?就像,我打开了网络选项卡,但我找不到这个链接。我在这个链接(pixiv.net/en/tags/Emilia/illustrations?s_mode=s_tag)中打开了它。对吗?
    • 不客气。如果它解决了您的问题,请accept回答。至于其他问题:this是api链接。
    猜你喜欢
    • 2021-08-17
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多