Парсер парсит только первые 5 URL картинок, а дальше /app/static/media/no_thumbnail.c222b0530.svg, что делать?
import requests from bs4 import BeautifulSoup as BS all_data = [] for page_number in range(1, 6): url = f"https://www.olx.kz/transport/?page={page_number}" r = requests.get(url) html = BS(r.content, 'html.parser') all_data.append(f"nnСтраница {page_number}n{'='*50}n") for el in html.select(".css-1sw7q4x"): title = el.select('.css-u2ayx9 > h6') price = el.select('.css-u2ayx9 > p') img = el.find('img') try: title_text = title[0].text.strip() price_text = price[0].text.strip() except IndexError: title_text = "No title" price_text = "No price" if img and 'src' in img.attrs: img_url = img['src'] elif img and 'data-src' in img.attrs: # Добавляем обработку атрибута data-src img_url = img['data-src'] else: img_url = 'No image' all_data.append(f"Название: {title_text}nЦена: {price_text}nURL картинки: {img_url}n") with open("titles.txt", 'w', encoding='utf-8') as f: for data in all_data: f.write(data) print("Данные были извлечены и сохранены в файл titles.txt") |
import requests from bs4 import BeautifulSoup as BS all_data = [] for page_number in range(1, 6): url = f"https://www.olx.kz/transport/?page={page_number}" r = requests.get(url) html = BS(r.content, 'html.parser') all_data.append(f"nnСтраница {page_number}n{'='*50}n") for el in html.select(".css-1sw7q4x"): title = el.select('.css-u2ayx9 > h6') price = el.select('.css-u2ayx9 > p') img = el.find('img') try: title_text = title[0].text.strip() price_text = price[0].text.strip() except IndexError: title_text = "No title" price_text = "No price" if img and 'src' in img.attrs: img_url = img['src'] elif img and 'data-src' in img.attrs: # Добавляем обработку атрибута data-src img_url = img['data-src'] else: img_url = 'No image' all_data.append(f"Название: {title_text}nЦена: {price_text}nURL картинки: {img_url}n") with open("titles.txt", 'w', encoding='utf-8') as f: for data in all_data: f.write(data) print("Данные были извлечены и сохранены в файл titles.txt")
Парсит URL картинок только у первых 5-ти объявлений, далее /app/static/media/no_thumbnail.c222b0530.svg, как пофиксить и что бы парсило все URL ?
Дополнительно:
requests парсит лишь первый ответ сервера и не может в динамический контент.
что делать?
Не использовать requests для парсинга, а использовать selenium.
- selenium открывает же браузер, разве получиться реализовать на хосте?
- zaxece09,
selenium открывает же браузер
Использует, да.
разве получиться реализовать на хосте?
Зависит от хостинга.
Ответы:
Скорее всего там динамическая подгрузка изображений. Для первых пяти сразу, а дальше - при скролле страницы.
- А никак нельзя это обойти ?
- zaxece09, выше написали. Используется инструменты моделирования поведения пользователя, например Selenium. Можете провести диагностику endpoint'ов - возможно можно будет обращаться за фотографиями напрямую, зная идентификаторы записей.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для решения проблемы с парсером, который парсит только первые 5 URL картинок и затем отображает стандартное изображение, можно использовать следующий подход.
Вам необходимо проверить, каким образом парсер получает изображения и как он их обрабатывает. Возможно, есть ограничение на количество изображений, которые парсер может обработать. Если это так, то вам нужно будет найти способ изменить это ограничение.
Если у вас есть доступ к исходному коду парсера, вы можете внести изменения в логику его работы. Например, вы можете изменить код таким образом, чтобы парсер мог обрабатывать больше чем 5 изображений.
Если у вас нет доступа к исходному коду парсера, вы можете попробовать обойти это ограничение, используя другой парсер или скрипт, который сможет собирать все изображения с сайта и обрабатывать их корректно.
Или же, вы можете попробовать изменить способ представления изображений на сайте. Например, вы можете вместо использования прямых URL изображений, использовать базу данных с ссылками на изображения, которые парсер будет обрабатывать корректно.
Независимо от выбранного способа, важно тщательно протестировать все изменения, чтобы убедиться, что они решают проблему и не вызывают других проблем.