我正在使用 Selenium 在 Python 中构建一个网络爬虫。以下是搜索链接的功能。它工作正常,除了被注释掉的部分。这个想法是将鼠标悬停在正在检查的页面上找到的每个链接上,如果该悬停动作显示更多链接(例如在使用 Javascript 构建的下拉菜单中),则使用对 getLinksFromHTML 的递归调用添加这些链接( “如果代码!= 1”部分只是为了确保只有一个递归调用)。
但是,当我在具有 JS 下拉菜单中的链接的页面上测试递归调用时(我正在查看的页面是http://wilmingtontaxesandaccounting.com),递归调用不会获取任何新链接。所有可见的链接都很好。
我该怎么做才能让 Selenium 看到这些下拉链接?我需要一个通用的解决方案,即没有特定的元素 ID 或任何其他特定于页面的硬编码到代码中。谢谢阅读!
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