Лучший опыт

В этой статье мы рассмотрим ... 4 Библиотеки Python для парсинга для добычи новостных данных — NewsCatcher

4 Библиотеки Python для парсинга для добычи новостных данных — NewsCatcher...

В этой статье мы рассмотрим четыре библиотеки для парсинга на Python с открытым исходным кодом. В частности, библиотеки, которые позволят вам легко добывать новостные данные. Все эти библиотеки работают без каких-либо API-ключей или учетных данных, поэтому вы можете сразу приступать к работе. Используйте их для создания собственного решения «Сделай сам» для вашего следующего проекта по обработке естественного языка (NLP), в котором требуются новостные данные.

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

Тем не менее, мы понимаем, что когда вы только начинаете и хотите создать MVP, неразумно платить за данные или нести ответственность за определенное количество вызовов API. Поэтому мы создали этот список бесплатных библиотек Python, которые позволят вам получать новостные данные в масштабе, ни о чем не беспокоясь. Эти библиотеки могут работать как полноценные альтернативы API новостных данных при использовании в небольших масштабах для ограниченного круга задач:

  • PyGoogleNews
  • NewsCatcher
  • Feedparser
  • Newspaper3k

PyGoogleNews

PyGoogleNews, созданный командой NewsCatcher, действует как обертка Python для Google News или неофициального Google News API. Он основан на одном простом приеме: он использует легкий RSS-канал Google News.

Для установки выполните: pip install pygooglenews

Проще говоря, он действует как библиотека-обертка для RSS-канала Google, которую вы можете легко установить с помощью PIP, а затем импортировать в свой код. Какие данные можно получить с ее помощью?

  • Лучшие истории
  • Ленты новостей, связанные с темами
  • Лента новостей с учетом геолокации
  • Обширная лента поиска на основе запросов

Приведенный выше код показывает, как можно извлечь определенные данные из лучших новостных статей в RSS-ленте Google. Вы можете заменить код «gn.top_news()» на «gn.topic_headlines(‘business’)», чтобы получить топ заголовков, относящихся к теме «Бизнес», или вы могли бы заменить его на «gn.geo_headlines(‘San Fran’)», чтобы получить топ новостей в регионе Сан-Франциско.

Вы также можете использовать сложные запросы, такие как «gn.search(‘boeing OR airbus’)» для поиска новостей, в которых упоминается Boeing или Airbus, или «gn.search(‘boeing -airbus’)» для поиска всех новостей, в которых упоминается Boeing, но не Airbus. При парсинге новостных статей с помощью этой библиотеки для каждой захваченной новостной записи вы получите следующие данные, которые можно использовать для обработки данных, обучения модели машинного обучения или запуска сценариев NLP:

  1. Заголовок — содержит заголовок статьи
  2. Ссылка — оригинальная ссылка на статью
  3. Опубликовано — дата публикации
  4. Резюме — краткое содержание статьи
  5. Источник — веб-сайт, на котором она была опубликована
  6. Подстатьи — список заголовков, издателей и ссылок, относящихся к одной и той же теме

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

from pygooglenews import GoogleNews  gn = GoogleNews() s = gn.search('boeing OR airbus')  for entry in s["entries"]:     print(entry["title"])

Вы получите результат, подобный этому:

Итак, мы вывели названия статей, которые мы получили в результате выполнения поиска на основе сложного запроса, и вы можете видеть, что каждая статья посвящена Boeing или Airbus. Вы можете использовать другие варианты запросов, описанные на Github-странице библиотеки, чтобы выполнять еще более сложные запросы к последним новостям с помощью PyGoogleNews. Вот что делает эту библиотеку очень удобной и простой в использовании даже для новичков.

NewsCatcher

Это еще одна библиотека с открытым исходным кодом, созданная нашей командой, которая может быть использована в DIY проектах. Это простая библиотека Python для парсинга, которая может быть использована для сбора новостных статей практически с любого новостного сайта. Она также позволяет собирать детали, связанные с новостным сайтом. Давайте остановимся на этом подробнее с помощью примеров и кода.

Для установки выполните команду: pip install newscatcher

Если вы хотите получить заголовки с новостного сайта, вы можете просто создать объект Newscatcher, передав ему URL сайта (не забудьте убрать HTTP и www и укажите только название сайта и расширение), и использовать функцию get_headlines() для получения верхних заголовков с сайта. Если вы запустите приведенный ниже код:

from newscatcher import Newscatcher, describe_url  mm = Newscatcher(website = 'mediamatters.org')  for index, headline in enumerate(mm.get_headlines()):    print(index, headline)

Вы будете получать верхние заголовки в выходных данных:

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

В приведенном выше коде мы использовали функцию get_news() для получения главных новостей с сайта nytimes.com. Извлекая лишь несколько точек данных, вы можете получить их все для дальнейшей обработки:

  • Заголовок
  • Ссылка
  • Авторы
  • Теги
  • Дата
  • Резюме
  • Содержание
  • Ссылка для комментариев
  • Post_id

Мы запустили код, чтобы получить JSON, показанный ниже. Теги могут оказаться очень полезными, если вы хотите отсортировать сотни новостных статей или сохранить их в облачном хранилище в таком формате, чтобы их можно было использовать в дальнейшем в ваших NLP или ML проектах.

Хотя это были инструменты для получения информации о новостях, вы также можете использовать функцию «describe_url» для получения подробной информации о веб-сайтах. Например, мы взяли 3 URL-адреса новостей и получили следующую информацию о них:

from newscatcher import describe_url  websites = ['nytimes.com', 'cronachediordinariorazzismo.org', 'libertaegiustizia.it']  for website in websites:    print(describe_url(website))

Мы получили такие данные, как URL, язык, страна и тематика для всех сайтов, которые мы передали в списке.

Вы можете видеть, как он определил, что 2-й и 3-й сайты имеют итальянское происхождение, а также темы для всех трех сайтов. Некоторые данные, например, страна, могут быть доступны не для всех сайтов, поскольку они предоставляют услуги по всему миру.

Feedparser

Библиотека FeedParser Python работает на Python3.6 или более поздней версии и может быть использована для анализа синдицированных каналов. Короче говоря, она может анализировать RSS- или Atom-каналы и предоставлять вам информацию в виде простых для понимания точек данных. Он действует как парсер новостей, и мы можем использовать его для сбора новостных данных из RSS-лент различных новостных сайтов.

Для установки выполните: pip install feedparser

По умолчанию вам сначала нужно будет найти URL RSS для анализа feedparser. Однако в этой статье мы будем использовать feedparser вместе с библиотекой feedsearch Python, которая может быть использована для поиска RSS URL путем перебора URL новостного сайта.

Приведенный выше код сначала использует feedsearch для поиска RSS-ссылок с сайта NYTimes, а затем использует feedparser для разбора RSS-канала.

Для установки выполните: pip install feedsearch

Если feedsearch не может найти RSS-ленту сайта, существует более продвинутая версия с краулером под названием feedsearch-crawler.

Newspaper3k

NewsPaper3k — это библиотека Python для парсинга новостных статей, просто передавая URL. Многие библиотеки, которые мы видели раньше, предоставляли нам контент, но вместе с большим количеством HTML-тегов и нежелательных данных. Эта библиотека поможет вам получить содержимое и несколько других данных практически из любой газетной статьи в Интернете. Эта библиотека Python для парсинга может быть объединена с любой из вышеперечисленных библиотек для извлечения полнотекстового текста статьи.

Для установки выполните: pip install newspaper3k

Для примера мы запустили библиотеку на последней статье в NYTimes:

Следует отметить, что и текст, и резюме, как обычно, усечены. Вы получите:

  • Текст статьи, свободный от тегов
  • Авторы
  • Дата публикации
  • Уменьшенные изображения для статьи
  • Видео, если таковое имеется, прикрепленное к статье
  • Ключевые слова, связанные со статьей
  • Резюме

Заключение и окончательное сравнение

Мы создали простое сравнение всех четырех библиотек Python для парсинга, которые могут быть использованы в DIY Python проектах для создания агрегатора контента, чтобы дать четкое представление о сильных и слабых сторонах.

PyGoogleNews

  • Альтернатива Google News API
  • Получает несколько точек данных для каждой новостной статьи
  • Можно передавать ключевые слова для поиска связанных новостей
  • Можно использовать сложные запросы с логическими операторами

NewsCatcher

  • Может использоваться для получения данных о новостях с нескольких веб-сайтов
  • Получает несколько точек данных для каждой новостной статьи
  • Вы можете фильтровать новости по теме, стране или языку

Feedparser

  • Может использоваться для разбора RSS-канала и получения важной информации
  • Собирает несколько точек данных для переданного RSS-канала

Newspaper3k

  • Помогает извлечь все точки данных из ссылки на новостную статью
  • Помогает извлекать точки данных, а также результаты, основанные на NLP, из новостной статьи