В каком месте парсера находится ошибка?

  • 10 сентября 2023 г. 18:26
Ответы на вопрос 2
Необходимо более подробное описание проблемы и исходный код парсера для точной диагностики ошибки. Без этой информации сложно определить, в каком месте парсера возникает ошибка.

Однако, возможны несколько причин, по которым в результате сохранения в файл JSON записывается только пустой объект "{}":

1. Некорректное или неполное описание парсера. Убедитесь, что вы правильно реализовали все необходимые шаги для разбора данных и записи их в JSON формат.

2. Ошибки в формате данных. Если входные данные для парсера оказываются некорректными или не соответствуют ожидаемому формату, парсер может не смочь правильно их обработать и возвращать пустой объект.

3. Ошибки в процессе сохранения в файл. Проверьте, что вы правильно указываете путь и имя файла при сохранении в JSON формате. Убедитесь, что у вас есть права на запись в указанную директорию.

Если вы предоставите больше информации, такую как исходный код парсера и пример входных данных, было бы проще определить причину возникновения ошибки и предложить конкретное решение.
import random
import json
import requests
import datetime
from bs4 import BeautifulSoup
from fake_useragent import UserAgent

# Создание объекта UserAgent для генерации случайных user-agent'ов
ua = UserAgent()

# Заголовки для запросов
headers = {
    'accept': 'application/json, text/plain, */*',
    'user-Agent': ua.google,
}

# Словарь для хранения статей
article_dict = {}

# Парсинг страниц с топовыми статьями
for i in range(1, 4): 
    url = f'https://habr.com/ru/top/daily/page{i}/' 
    
    # Отправка GET-запроса и получение HTML-страницы
    req = requests.get(url, headers=headers).text
    
    # Создание объекта BeautifulSoup для парсинга HTML
    soup = BeautifulSoup(req, "html.parser") 
    
    # Поиск ссылок на статьи
    all_hrefs_articles = soup.find_all("a", class_='tm-title__link')
    
    # Итерация по найденным ссылкам
    for article in all_hrefs_articles:
        # Получение названия и ссылки статьи
        article_name = article.find('span').text 
        article_link = f'https://habr.com{article.get("href")}'
        
        # Добавление статьи в словарь
        article_dict[article_name] = article_link 

# Запись словаря со статьями в JSON-файл
with open(f"articles_{datetime.datetime.now().strftime('%d_%m_%Y')}.json", "w", encoding='utf-8') as f: 
    try:
        json.dump(article_dict, f, indent=4, ensure_ascii=False)
        print('Статьи были успешно получены')

    except:
        print('Статьи не удалось получить')Надеюсь помог ;)
Похожие вопросы