Python和Selenium:访问Javascript构建的下拉菜单中隐藏的链接的好方法是什么?

2024-09-27 20:17:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python构建一个使用Selenium的webcrawler。下面是搜索链接的函数。它工作得很好,除了被注释掉的部分。其思想是将鼠标悬停在被检查页面上找到的每个链接上,如果该悬停操作显示了更多链接(例如,在使用Javascript构建的下拉菜单中),则使用递归调用getLinksFromHTML添加这些链接(“if代码”!=1“部件只是为了确保只有一个递归调用)。在

但是,当我在JS下拉菜单中有链接的页面上测试递归调用时,它不会获取任何新的链接(我正在查看的页面是http://wilmingtontaxesandaccounting.com)。所有可见的链接都被很好地拾取。在

我该怎么做才能让Selenium看到这些下拉链接?我需要一个通用的解决方案,也就是说,没有特定的元素id或任何其他页面特定的harcoded到代码中。谢谢你的阅读!在

def getLinksFromHTML(currUrl, code):

    ListlinkerHref = browser.find_elements_by_xpath("//*[@href]")
    links1 = []
    links2 = []

    for link in ListlinkerHref:
        url = link.get_attribute("href")

        #hov = ActionChains(browser).move_to_element(link)
        #hov.perform()
        #if code != 1:
            #links1 = self.getLinksFromHTML(currUrl, 1)

        if url not in links1:
            links2.append(url)

    return links1 + links2  

Tags: 代码browserurlif链接seleniumlinkcode
1条回答
网友
1楼 · 发布于 2024-09-27 20:17:52

结果它不起作用的原因是我使用的是Firefox驱动程序。显然,在Firefox中,move_-to-u元素实际上并不是停留在元素上,它只是“聚焦”在那里。当我切换到一个Chrome驱动程序时,它实际上会在菜单项上悬停并显示子菜单。(请注意,实际函数中有一些错误,但这不是问题的重点。)

DR:如果您使用的是Selenium Webdriver,并且希望将鼠标悬停在链接上以显示子菜单之类的内容,请使用Chrome而不是Firefox。在

相关问题 更多 >

    热门问题