在必须进入第一和第二搜索页面中的链接之后,我正在尝试自动在Google搜索中点击下一页。
到目前为止,我已经能够执行以下操作:
请参见下面的代码:
from time import sleep
from selenium import webdriver
from parsel import Selector
from selenium.webdriver.common.keys import Keys
#path to the chromedriver
driver = webdriver.Chrome('/Users\my_path/chromedriver')
driver.get('https://www.gooogle.com')
#locate search form by name
search_query = driver.find_element_by_name('q')
#Input search words
search_query.send_keys('X-Men')
#Simulate return key
search_query.send_keys(Keys.RETURN)
Xmen_urls = driver.find_elements_by_class_name('iUh30')
for page in range(0,3):
Xmen_urls = [url.text for url in Xmen_urls]
#loop to iterate through all links in the google search query
for Xmen_url in Xmen_urls:
driver.get(Xmen_url)
sel = Selector(text = driver.page_source)
#Go back to google search
driver.get('https://www.gooogle.com')
#locate search form by name
search_query = driver.find_element_by_name('q')
#Input search words
search_query.send_keys('X-Men')
#Simulate return key
search_query.send_keys(Keys.RETURN)
#find next page icon in Google search
Next_Google_page = driver.find_element_by_link_text("Next").click()
page += 1
当我收集完“第二个”搜索页面上的链接后,如何告诉算法从“第二个”搜索页面而不是第一个搜索页面开始(这将使我进入> 2个页面)。
我知道这是一个“ for循环”,语法重新排列,我在某个地方不见了,但是此时我的大脑被冻结了。
我看到了以下页面:How to click the next link in google search results?,但只有在我不离开Google搜索页面的情况下,它才有帮助
我在做什么错了?
答案 0 :(得分:0)
我可以通过两种方式查看:
使用window_handles在单独的窗口中打开每个X战警网址,收集page_source,关闭窗口并切换回原始窗口。
driver.execute_script("window.open(X-Men_url, 'new_window')")
driver.switch_to.window(driver.window_handles[1])
sel = Selector(text = driver.page_source)
driver.close()
driver.switch_to.window(driver.window_handles[0])
上面的代码可能无法完全正常运行,但可以起到一定作用。
另一种方法是使用循环来模拟FOR循环开始时在NEXT上的点击次数:
a = 0;
while a <= page:
driver.find_element_by_xpath("//*[contains(local-name(), 'span') and contains(text(), 'Next')]").click()
a = a+1