Итерация результатов поиска Google с использованием python селена - PullRequest
0 голосов
/ 03 августа 2020

Я хочу итеративно нажимать на результаты поиска Google и копировать меню каждого сайта. Пока что я скопировал меню и вернулся на страницу результатов, но не смог повторить щелчок по результатам. На данный момент я хотел бы научиться повторять только результаты поиска, но я застрял в исключении ссылки устаревшего элемента, я сделал вижу несколько других источников, но не повезло.

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

1 Ответ

0 голосов
/ 03 августа 2020

StaleElementReferenceException означает, что элементы, на которые вы ссылаетесь, больше не существуют. Обычно это происходит, когда страница автоматически перерисовывается. В вашем случае вы меняете страницу и переходите обратно, поэтому элементы будут перерисованы на 100%.

Решение по умолчанию - каждый раз искать в списке внутри l oop.

Если вы хотите быть уверены, что список одинаков на каждой итерации, вам нужно добавить дополнительную проверку (сравнить тексты, et c.)

Если вы используете этот код для очистки, вероятно, вам не нужна обратная навигация . Просто открывайте каждую страницу напрямую с помощью driver.get(href)

Здесь вы можете найти пример кода: Как открыть ссылку в новой вкладке (chrome) с помощью Selenium WebDriver?

...