首页 > 解决方案 > 使用 python selenium 迭代谷歌搜索结果

问题描述

我想迭代点击谷歌搜索结果并复制每个站点的菜单。到目前为止,我正在复制菜单并返回结果页面,但无法迭代单击结果。现在,我想单独学习迭代搜索结果,但我陷入了过时的元素引用异常,我做到了很少看到其他来源,但没有运气。

from selenium import webdriver
chrome_path = r"C:\Users\Downloads\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get('https://www.google.com?q=python#q=python')
weblinks = driver.find_elements_by_xpath("//div[@class='g']//a[not(@class)]");
for links in weblinks[0:9]:
    links.get_attribute("href")
    print(links.get_attribute("href"))
    links.click()
    driver.back()

标签: pythonseleniumweb-scraping

解决方案


StaleElementReferenceException 意味着您所指的元素不再存在。这通常发生在页面自动重绘时。在您的情况下,您更改页面并返回,因此元素将被重绘 100%。

默认解决方案是每次搜索循环内的列表。

如果您想确保列表每次迭代都相同,则需要添加一些额外的检查(比较文本等)

如果您使用此代码进行抓取,则可能不需要返回导航。只需直接打开每个页面driver.get(href)

在这里您可以找到代码示例:如何使用 Selenium WebDriver 在新选项卡 (chrome) 中打开链接?


推荐阅读