Duff89 / parser_avito

Находит товары на avito.ru по ключевым словам
175 stars 63 forks source link

Ошибка при попытке найти класс "item-description" . #4

Closed fmfnjnf closed 1 year ago

fmfnjnf commented 1 year ago

Сообщение об ошибке указывает на то, что сценарий столкнулся с ошибкой при попытке найти элемент HTML с помощью Selenium, популярной библиотеки веб-скрейпинга. В частности, ошибка произошла в методе под названием "__paginator", который является частью более крупного класса под названием "AvitoParse".

Сообщение об ошибке содержит обратную трассировку, которая показывает последовательность вызовов функций, приведших к ошибке. Отслеживание показывает, что ошибка произошла на строке 74 класса "AvitoParse" в методе "__paginator". Метод пытается разобрать веб-страницу и извлечь из нее данные, но при попытке найти элемент HTML с классом "item-description" он столкнулся с ошибкой.

Сообщение об ошибке указывает, что метод Selenium "find_element" был вызван на объекте WebElement, но метод "find_element" не смог найти нужный элемент. Это вызвало ошибку "нет такого элемента", которая была поймана кодом обработки ошибок скрипта и записана в журнал.

Чтобы исправить ошибку, автору сценария необходимо просмотреть HTML-структуру соскабливаемой веб-страницы и скорректировать код, чтобы правильно находить нужные элементы. Это может потребовать изменения селектора CSS, используемого для поиска элементов, или изменения способа взаимодействия библиотеки Selenium с веб-страницей. Сообщение об ошибке указывает на то, что сценарий столкнулся с ошибкой при попытке найти элемент HTML с помощью Selenium, популярной библиотеки веб-скрейпинга. В частности, ошибка произошла в методе под названием "__paginator", который является частью более крупного класса под названием "AvitoParse".

Сообщение об ошибке содержит обратную трассировку, которая показывает последовательность вызовов функций, приведших к ошибке. Отслеживание показывает, что ошибка произошла на строке 74 класса "AvitoParse" в методе "__paginator". Метод пытается разобрать веб-страницу и извлечь из нее данные, но при попытке найти элемент HTML с классом "item-description" он столкнулся с ошибкой.

Сообщение об ошибке указывает, что метод Selenium "find_element" был вызван на объекте WebElement, но метод "find_element" не смог найти нужный элемент. Это вызвало ошибку "нет такого элемента", которая была поймана кодом обработки ошибок скрипта и записана в журнал.

Чтобы исправить ошибку, автору сценария необходимо просмотреть HTML-структуру соскабливаемой веб-страницы и скорректировать код, чтобы правильно находить нужные элементы. Это может потребовать изменения селектора CSS, используемого для поиска элементов, или изменения способа взаимодействия библиотеки Selenium с веб-страницей.

Более подробная ошибка: self._sink.write(str_record) File "/usr/local/lib/python3.10/dist-packages/loguru/_simple_sinks.py", line 50, in write self._handler.handle(record) File "/usr/lib/python3.10/logging/init.py", line 968, in handle self.emit(record) File "/usr/local/lib/python3.10/dist-packages/notifiers/logging.py", line 52, in emit self.handleError(record) Message: 'An error has been caught in function \'paginator\', process \'MainProcess\' (25303), thread \'MainThread\' (139769717370880):\nTraceback (most recent call last):\n\n File "/root/parser_avito-master/parser_avito-master/parser_cls.py", line 193, in \n ).parse()\n\n File "/root/parser_avito-master/parser_avito-master/parser_cls.py", line 156, in parse\n self.paginator()\n -> <main.AvitoParse object at 0x7f1eabc87a30>\n\n> File "/root/parser_avito-master/parser_avito-master/parser_cls.py", line 74, in paginator\n self.parse_page()\n -> <main.AvitoParse object at 0x7f1eabc87a30>\n\n File "/root/parser_avito-master/parser_avito-master/parser_cls.py", line 96, in __parse_page\n description = title.find_element(LocatorAvito.DESCRIPTIONS).text\n | | | -> (\'css selector\', "[class=\'item-description\']")\n | | -> <class \'locator.LocatorAvito\'>\n | -> <function WebElement.find_element at 0x7f1eab42d240>\n -> <undetected_chromedriver.webelement.WebElement (session="31f83e63e76950e96fd0de1f9ad82d8c", element="087F05A1AE8BAB737E365916...\n\n File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webelement.py", line 426, in find_element\n return self._execute(Command.FIND_CHILD_ELEMENT, {"using": by, "value": value})["value"]\n | | | | | -> "[class=\'item-description\']"\n | | | | -> \'css selector\'\n | | | -> \'findChildElement\'\n | | -> <class \'selenium.webdriver.remote.command.Command\'>\n | -> <function WebElement._execute at 0x7f1eab42d1b0>\n -> <undetected_chromedriver.webelement.WebElement (session="31f83e63e76950e96fd0de1f9ad82d8c", element="087F05A1AE8BAB737E365916...\n File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webelement.py", line 404, in _execute\n return self._parent.execute(command, params)\n | | | | -> {\'using\': \'css selector\', \'value\': "[class=\'item-description\']", \'id\': \'087F05A1AE8BAB737E365916A8A9BC73_element_57\'}\n | | | -> \'findChildElement\'\n | | -> <function WebDriver.execute at 0x7f1eab4416c0>\n | -> <undetected_chromedriver.Chrome (session="31f83e63e76950e96fd0de1f9ad82d8c")>\n -> <undetected_chromedriver.webelement.WebElement (session="31f83e63e76950e96fd0de1f9ad82d8c", element="087F05A1AE8BAB737E365916...\n File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute\n self.error_handler.check_response(response)\n | | | -> {\'status\': 404, \'value\': \'{"value":{"error":"no such element","message":"no such element: Unable to locate element: {\\"metho...\n | | -> <function ErrorHandler.check_response at 0x7f1eab624a60>\n | -> <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f1eaab7a050>\n -> <undetected_chromedriver.Chrome (session="31f83e63e76950e96fd0de1f9ad82d8c")>\n File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response\n raise exception_class(message, screen, stacktrace)\n | | | -> [\'#0 0x55db32e20133 \', \'#1 0x55db32b54966 \', \'#2 0x55db32b910dc \', \'#3 0x55db32b91211 \', ...\n | | -> None\n | -> \'no such element: Unable to locate element: {"method":"css selector","selector":"[class=\\'item-description\\']"}\n (Session ...\n -> <class \'selenium.common.exceptions.NoSuchElementException\'>\n\nselenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[class=\'item-description\']"}\n (Session info: chrome=113.0.5672.63)\nStacktrace:\n#0 0x55db32e20133 \n#1 0x55db32b54966 \n#2 0x55db32b910dc \n#3 0x55db32b91211 \n#4 0x55db32b86e26 \n#5 0x55db32bb0bfd \n#6 0x55db32b86d13 \n#7 0x55db32bb0d9e \n#8 0x55db32bc91c7 \n#9 0x55db32bb09a3 \n#10 0x55db32b8546a \n#11 0x55db32b8655e \n#12 0x55db32ddfcae \n#13 0x55db32de38fe \n#14 0x55db32decf20 \n#15 0x55db32de4923 \n#16 0x55db32db7c0e \n#17 0x55db32e07b08 \n#18 0x55db32e07c97 \n#19 0x55db32e18113 \n#20 0x7fd57b197b43 \n\n' Arguments: ()

Duff89 commented 1 year ago

Спасибо ChatGPT за пятикратное объяснение ошибки, но не нужно так делать. Данная ошибка возникла из-за того, что Selenium не нашел описание какого-то объявления. Для выяснения причины нужно больше данных: 1) Настройки, с которыми работал скрипт 2) Сколько времени он отработал 3) Что было написано в консоли помимо это ошибки 4) Воспроизводимость ошибки, т.е. это поведение постоянное или нет

fmfnjnf commented 1 year ago
  1. """Здесь заменить данные на свои""" url = 'https://www.avito.ru/moskva?q=мониторы&s=104' num_ads = 2 #'количество страниц для поиска' keys = 'Монитор' # ключевые слова min_price = 6000 # минимальная цена max_price = 10000 # максимальная цена token = '' # токен телеги chat_id = '' # chat id телеги pause_time = 2 # пауза в минутах
  2. 15 часов ~
  3. Только это
  4. Постоянное, после данной ошибки идет повторение.
Duff89 commented 1 year ago

Вышла версия 1.02, улучшена стабильность. Просьба проверить

fmfnjnf commented 1 year ago

Добрый день. Я проверил, все хорошо работает, спасибо за помощь в решении проблемы.

Duff89 commented 1 year ago

Отлично