Google ищет следующие страницы, используя селен - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь автоматизировать переход на следующую страницу в поиске Google, после того как я перешел на ссылки на 1-й и 2-й страницах поиска.

До сих пор я мог это сделатьследующее:

  1. Раскрутка браузера Chrome
  2. Перейти на веб-страницу Google
  3. Введите слова для поиска
  4. Нажмите на значок поиска
  5. Перейдите по ссылкам на 1-й и 2-й странице 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-й», как мне сказать, чтобы алгоритм запускался со страницы поиска «2-й», а не с 1-й страницы поиска (это позволит мне перейти на> 2 страницы).

Я знаю, что это 'for loop 'и реорганизация синтаксиса Я где-то пропустил, но мой мозг застыл на этом этапе.

Я видел эту страницу: Как перейти по следующей ссылке в результатах поиска Google? но это помогает, только если я не ухожу со страницы поиска Google

Что я делаю не так?

1 Ответ

0 голосов
/ 18 октября 2018

Я вижу два варианта:

Откройте каждый URL-адрес X-Men в отдельном окне, используя window_handles, соберите 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 с помощью цикла:

a = 0;
while a <= page:
    driver.find_element_by_xpath("//*[contains(local-name(), 'span') and contains(text(), 'Next')]").click()
    a = a+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...