如何使用循环和硒解决此问题?

时间:2020-05-13 13:18:47

标签: python selenium

因此,我正在尝试使用Selenium Web Driver和Python提取Google上某个单词的第一个自然搜索结果的URL。它是这样的:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(chrome_options=chrome_options)

sample =[]
news = ["a", "b", "c"]

for item in range(len(news)):
    driver.get('https://www.google.com')
    driver.find_element_by_xpath('search_bar_xpath').send_keys(news[item+1])
    driver.find_element_by_xpath('search_button_xpath').click()
    domain = driver.find_element_by_xpath('first_result_url_xpath').text
    sample.append(domain)
    driver.close()

嗯,它不会循环。你们能帮我解决这个问题吗?有时first_result_url_xpath会更改为另一个名称。如何告诉它搜索另一个而不担心第一次尝试?

1 个答案:

答案 0 :(得分:0)

问题是,您在循环的第一个周期中关闭了驱动程序。您应该将其从循环中删除:

for item in range(len(news)):
    driver.get('https://www.google.com')
    driver.find_element_by_xpath(search_bar_xpath).send_keys(news[item+1])
    driver.find_element_by_xpath(search_button_xpath).click()
    domain = driver.find_element_by_xpath(first_result_url_xpath).text
    sample.append(domain)
driver.close()

您可以使用以下方法获得多个结果:driver.findElements(By.xpath(first_result_url_xpath)) 然后对其进行迭代以找到您要搜索的内容。