@zaxece09

Парсер парсит только первые 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"\n\nСтраница {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 ?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
requests парсит лишь первый ответ сервера и не может в динамический контент.
что делать?

Не использовать requests для парсинга, а использовать selenium.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Shavadrius
Скорее всего там динамическая подгрузка изображений. Для первых пяти сразу, а дальше - при скролле страницы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы