【问题标题】:How to iterating google pages using Selenium Python如何使用 Selenium Python 迭代谷歌页面
【发布时间】:2021-03-01 12:09:21
【问题描述】:

我正在尝试使用 Selenium 抓取 google 搜索数据,我也可以获取所有数据,但最后当页面结束时,我会看到一个错误。

line 23, in <module>
    next_page = driver.find_element_by_link_text('Next')

 line 428, in find_element_by_link_text
    return self.find_element(by=By.LINK_TEXT, value=link_text)

这是我的代码,成功收集所有数据后出现此错误。

from selenium import webdriver
from time import sleep


driver = webdriver.Chrome('./chromedriver.exe')
driver.maximize_window()
driver.get('https://www.google.com/search?q=florida+time+now')

driver.find_element_by_link_text('Change to English').click()
sleep(2)

print(driver.current_url)
print(driver.title)


while True:
    titles = driver.find_elements_by_xpath('//*[@class="LC20lb DKV0Md"]')
    for title in titles:
        link_title = title.find_element_by_xpath('.//span').text
        print(link_title)

    sleep(3)
    next_page = driver.find_element_by_link_text('Next')
    if next_page:
        next_page.click()
    else:
        break


sleep(2)
driver.close()

【问题讨论】:

  • Next - 是 ,而不是链接。也许这可能是您的错误的原因?
  • 感谢@DmytroHuz 回复 标签内的数据或标题。所以要获得标题,我必须访问 span 标签:)
  • driver.find_element_by_link_text('Change to English').click() 我在任何地方都没有看到更改为英语

标签: python selenium webdriver selenium-chromedriver


【解决方案1】:

如果元素不存在,它会抛出错误。您可以使用driver.find_elements_by_link_text('Next') 检查元素的长度,这将返回元素的list。如果大于0,则检查长度,然后单击 否则break。 p>

    next_page = driver.find_elements_by_link_text('Next')
    if len(next_page)>0:
        next_page[0].click()
    else:
        break

【讨论】:

    猜你喜欢
    • 2020-11-23
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2020-09-11
    • 2021-05-15
    • 2020-05-31
    • 2023-03-20
    • 2019-01-04
    相关资源
    最近更新 更多