【问题标题】:Iterating google search results using python selenium使用 python selenium 迭代谷歌搜索结果
【发布时间】:2020-11-23 20:25:58
【问题描述】:

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

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()

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

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

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

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

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

    您可以在这里找到代码示例:How to open a link in new tab (chrome) using Selenium WebDriver?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2012-04-10
      • 2011-12-19
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多