Загрузите изображения из Google, используя python с селеном

from selenium import webdriver
import time
import urllib.request
import os
from selenium.webdriver.common.keys import Keys


browser = webdriver.Chrome(r"C:\Users\Harbidel\Desktop\chromedriver.exe") #incase you are chrome
browser.get("https://www.google.com/")


search = browser.find_element_by_name('q')


search.send_keys('dog',Keys.ENTER)


elem = browser.find_element_by_link_text('Images')
elem.get_attribute('href')
elem.click()


value = 0
for i in range(5):
   browser.execute_script("scrollBy("+ str(value) +",+1000);")
   value += 1000
   time.sleep(3)

Итак, когда я дошел до этого момента и запустил этот код ниже:

elem1 = browser.find_element_by_id('rg_s')

я получил эту ошибку

NoSuchElementException                    Traceback (most recent call last)
<ipython-input-10-7a9a75bc9c99> in <module>
----> 1 elem1 = browser.find_element_by_id('rg_s')

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element_by_id(self, id_)
    358             element = driver.find_element_by_id('foo')
    359         """
--> 360         return self.find_element(by=By.ID, value=id_)
    361 
    362     def find_elements_by_id(self, id_):

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element(self, by, value)
    976         return self.execute(Command.FIND_ELEMENT, {
    977             'using': by,
--> 978             'value': value})['value']
    979 
    980     def find_elements(self, by=By.ID, value=None):

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
    319         response = self.command_executor.execute(driver_command, params)
    320         if response:
--> 321             self.error_handler.check_response(response)
    322             response['value'] = self._unwrap_value(
    323                 response.get('value', None))

~\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
    240                 alert_text = value['alert'].get('text')
    241             raise exception_class(message, screen, stacktrace, alert_text)
--> 242         raise exception_class(message, screen, stacktrace)
    243 
    244     def _value_or_default(self, obj, key, default):

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="rg_s"]"}
  (Session info: chrome=83.0.4103.106)

person H4RB1D3L    schedule 22.06.2020    source источник


Ответы (1)


это, вероятно, потому, что rg_s не является идентификатором. Если вы уверены, что это идентификатор, попробуйте продолжить работу с кодом, не прерывая ошибку:

from selenium import webdriver
import time
import urllib.request
import os
from selenium.webdriver.common.keys import Keys


browser = webdriver.Chrome(r"C:\Users\Harbidel\Desktop\chromedriver.exe") #incase you are chrome
browser.get("https://www.google.com/")


search = browser.find_element_by_name('q')


search.send_keys('dog',Keys.ENTER)


elem = browser.find_element_by_link_text('Images')
elem.get_attribute('href')
elem.click()

try:
   value = 0
   for i in range(5):
      browser.execute_script("scrollBy("+ str(value) +",+1000);")
      value += 1000
      time.sleep(3)
      elem1 = browser.find_element_by_id('rg_s')
except:
   continue
person Huzefa Usama    schedule 24.06.2020