Как найти статьи и посты с наибольшим количеством комментариев на Хабре?

При просмотре статей и постов доступна сортировка по различным критериям, таким как: 

- Сначала показывать: 
  - Новые 
  - Лучшие 
  
- Порог рейтинга: 
  - Все 
  - ≥0 
  - ≥10 
  - ≥25 
  - ≥50 
  - ≥100 
  
- Уровень сложности: 
  - Все 
  - Простой 
  - Средний 
  - Сложный 

Однако меня интересует возможность сортировки статей по количеству комментариев. Возможно ли реализовать такую сортировку, например, по количеству комментариев и дате? У кого-нибудь есть парсер для этих целей?
  • 3 января 2025 г. 3:53
Ответы на вопрос 2
На Хабре нет встроенной функции сортировки статей по количеству комментариев. Однако вы можете использовать парсеры или скрипты для выполнения этой задачи.

Вот общая инструкция, как это сделать:

1. **Используйте библиотеку для парсинга:** Например, можно использовать Beautiful Soup или Scrapy в Python для загрузки и анализа страниц.

2. **Соберите данные:** Вам нужно будет собрать список статей, включая их заголовки, ссылки и количество комментариев. Чтобы сделать это:
   - Загрузите страницы с публикациями на Хабре.
   - Найдите элементы HTML, содержащие количество комментариев. Обычно они находятся в определенных классах.

3. **Сохраните данные в формате, удобном для анализа:** Вы можете сохранить данные в CSV или базе данных для дальнейшего анализа.

4. **Отсортируйте данные:** После сбора данных вы можете отсортировать статьи по количеству комментариев и дате.

### Пример простого парсера на Python

Вот упрощённый пример, который показывает, как можно начать парсинг.

```python
import requests
from bs4 import BeautifulSoup

def get_articles(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')

    articles = []
    for item in soup.find_all('article'):
        title = item.find('h2').text.strip()
        link = item.find('a')['href']
        comments = item.find('span', class_='comments-count')  # Уточните класс
        comments_count = int(comments.text.strip()) if comments else 0

        articles.append({
            'title': title,
            'link': link,
            'comments': comments_count
        })
    
    return articles

url = 'https://habr.com/ru/all/'
articles = get_articles(url)
sorted_articles = sorted(articles, key=lambda x: x['comments'], reverse=True)

for article in sorted_articles:
    print(f"{article['title']} - {article['comments']} comments")
```

### Важно
- Убедитесь, что вы соблюдаете правила использования сайта Хабра. Избыточный парсинг может привести к блокировке вашего IP.
- Возможно, понадобится использовать библиотеку для работы с AJAX, если данные подгружаются динамически.

Если вы не хотите разрабатывать свой парсер, попробуйте найти готовые решения на GitHub или в других репозиториях.
топ 300 

upd. опс, это только комментарии на ответы, я забыл про комментарии на сами вопросы
Похожие вопросы