NEWSCATCHER

Создайте свой первый конвейер данных новостей с помощью Python и Newscatcher

Пакет Python Newscatcher позволяет автоматически собирать данные о последних новостях с более чем 3000 основных новостных веб-сайтов.

Пока я пишу эту статью, многим людям приходится работать из дома, у некоторых в этот период много свободного времени. Вы можете использовать это время, чтобы создать свое портфолио, улучшить свои навыки или начать побочный проект.

Пакет Newscatcher позволяет легко собирать и нормализовать данные о новостных статьях без каких-либо внешних зависимостей. Он был создан, когда мы работали над нашим основным продуктом Данные как услуга под названием Newscatcher API. Мы - команда разработчиков, поэтому мы максимально открываем исходный код, чтобы кодеры могли частично воспроизвести работу, которую мы сделали, бесплатно.

Способ использования нашего пакета прост: вы передаете URL-адрес веб-сайта в качестве входных данных и получаете последние статьи в качестве выходных. Для каждой статьи у вас есть заголовок, полный URL-адрес, краткое описание, дата публикации, автор (ы) и некоторые другие переменные.

Быстрый старт

У вас должен быть Python 3.7+

Установите пакет через PyPI:

pip install newscatcher

Импортируйте класс Newscatcher из пакета:

from newscatcher import Newscatcher

Например, мы хотим узнать, какие статьи были последними с сайта nytimes.com.

Вы должны передать базовую форму URL-адреса - ни www., ни https://, ни / в конце URL-адреса.

news_source = Newscatcher(‘nytimes.com’)
last_news_list = news_source.news

news_source.news - это список feedparser.FeedParserDict. Feedparser - это пакет Python, который нормализует RSS-поток. В другом посте на Medium я более подробно объясняю, что такое RSS и как с ним работать с помощью feedparser:



Важно знать, что каждый канал RSS / Atom может иметь собственный набор атрибутов. Несмотря на то, что feedparser отлично структурирует его, атрибуты статьи могут отличаться от одного новостного издателя к другому.

Для nytimes.com список атрибутов статьи следующий:

article = last_news_list[0]
article.keys()
dict_keys(['title', 'title_detail', 'links', 'link', 'id', 'guidislink', 'summary', 'summary_detail', 'published', 'published_parsed', 'tags', 'media_content', 'media_credit', 'credit'])

В приведенном выше коде мы берем первую статью в списке под названием last_news_list и проверяем ее ключи (каждая статья представляет собой словарь).

Когда мы рассмотрим основные атрибуты:

print(article.title)
Coronavirus Live Updates: New York City Braces for a Deluge of Patients; Costs of Containment Grow
print(article.summary)
Soldiers in Spain found nursing home patients abandoned. Officials warned that New York was experiencing a virus “attack rate” of five times that elsewhere in the United States. Washington edged closer to a $2 trillion relief package.
print(article.link)
https://www.nytimes.com/2020/03/24/world/coronavirus-updates-maps.html
print(article.published)
Tue, 24 Mar 2020 10:35:54 +0000

Скорее всего, вы найдете все вышеперечисленные атрибуты в данных статьи от всех новостных издателей.

На данный момент в Newscatcher доступны крупнейшие новостные издатели. Таким образом, вы можете создать проект сквозных данных. Вы можете сделать еще много разных вещей, например:

  • конвейер для сбора и сохранения новостных статей в какую-то базу данных (с дедупликацией)
  • + добавить слой НЛП (например, распознавание именованных сущностей)
  • + отслеживать определенную тему
  • + очистить весь текст статьи
  • + визуализировать агрегированные данные

Я бы порекомендовал использовать следующие пакеты / технологии при работе с пакетом newscatcher:

  1. Elasticsearch для хранения и запроса данных
  2. Пакет Python Newscaper3k для автоматической очистки полного текста статьи
  3. Spacy для НЛП

Подсказка для тех из вас, кто хочет улучшить свое портфолио. Возможность показать рекрутеру, что вы способны выполнить сквозной проект, выделит ваше резюме из общей массы. Тем не менее, бизнес-ценность вашей работы также важна. Поэтому постарайтесь создать что-то существующее, чтобы служить реальной бизнес-ценности. Удачи.



Если вы хотите поддержать нашу команду, вы можете помочь нам, подписавшись на закрытую бета-версию Newscatcher API. Наш API позволяет вам искать самые актуальные новости, опубликованные в прошлом.

Подпишитесь на бета-версию