В этой статье мы рассмотрим четыре библиотеки для парсинга на Python с открытым исходным кодом. В частности, библиотеки, которые позволят вам легко добывать новостные данные. Все эти библиотеки работают без каких-либо API-ключей или учетных данных, поэтому вы можете сразу приступать к работе. Используйте их для создания собственного решения «Сделай сам» для вашего следующего проекта по обработке естественного языка (NLP), в котором требуются новостные данные.
Новостные данные необходимы для многих приложений и решений, особенно в финансовой и политической сферах. И просто получить новостные данные недостаточно, для таких случаев использования требуются новостные данные в масштабе. Например, кандидат, участвующий в выборах на национальном уровне, не захочет оценивать свой рейтинг на основе только местных новостных изданий. Точно так же инвестиционные компании не захотят строить свой тезис на основе нескольких веб-сайтов. Именно для этого и существуют сервисы извлечения и агрегации новостных данных.
ИСКУССТВО И КУЛЬТУРА
СПОРТИВНЫЕ ПЛОЩАДКИ
Тем не менее, мы понимаем, что когда вы только начинаете и хотите создать MVP, неразумно платить за данные или нести ответственность за определенное количество вызовов API. Поэтому мы создали этот список бесплатных библиотек Python, которые позволят вам получать новостные данные в масштабе, ни о чем не беспокоясь. Эти библиотеки могут работать как полноценные альтернативы API новостных данных при использовании в небольших масштабах для ограниченного круга задач:
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:
Мы извлекли лишь некоторые из доступных точек данных, но вы можете извлечь и другие, исходя из ваших требований. Вот небольшой пример результатов, полученных в результате сложных запросов. Если вы выполните приведенный ниже код:
from pygooglenews import GoogleNews
gn = GoogleNews()
s = gn.search('boeing OR airbus')
for entry in s["entries"]:
print(entry["title"])
Вы получите результат, подобный этому:
Итак, мы вывели названия статей, которые мы получили в результате выполнения поиска на основе сложного запроса, и вы можете видеть, что каждая статья посвящена Boeing или Airbus. Вы можете использовать другие варианты запросов, описанные на Github-странице библиотеки, чтобы выполнять еще более сложные запросы к последним новостям с помощью PyGoogleNews. Вот что делает эту библиотеку очень удобной и простой в использовании даже для новичков.
Это еще одна библиотека с открытым исходным кодом, созданная нашей командой, которая может быть использована в 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. Извлекая лишь несколько точек данных, вы можете получить их все для дальнейшей обработки:
Мы запустили код, чтобы получить 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 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 — это библиотека Python для парсинга новостных статей, просто передавая URL. Многие библиотеки, которые мы видели раньше, предоставляли нам контент, но вместе с большим количеством HTML-тегов и нежелательных данных. Эта библиотека поможет вам получить содержимое и несколько других данных практически из любой газетной статьи в Интернете. Эта библиотека Python для парсинга может быть объединена с любой из вышеперечисленных библиотек для извлечения полнотекстового текста статьи.
Для установки выполните: pip install newspaper3k
Для примера мы запустили библиотеку на последней статье в NYTimes:
Следует отметить, что и текст, и резюме, как обычно, усечены. Вы получите:
Мы создали простое сравнение всех четырех библиотек Python для парсинга, которые могут быть использованы в DIY Python проектах для создания агрегатора контента, чтобы дать четкое представление о сильных и слабых сторонах.
PyGoogleNews
NewsCatcher
Feedparser
Newspaper3k
Краткое резюме: как превратить сеть сайтов в стабильный источник дохода Создание сети информационных сайтов —…
Знаете ли вы, что невидимые технические ошибки могут «съедать» до 90% вашего потенциального трафика из…
Введение: почему мониторинг цен — необходимость, а защита — не преграда Представьте, что вы пытаетесь…
Значительная часть трафика на любом коммерческом сайте — это не люди. Это боты, которые могут…
Систематический мониторинг цен конкурентов — это не просто способ избежать ценовых войн, а доказанный инструмент…
Краткое содержание В мире, где 93% потребителей читают отзывы перед покупкой 1, а рейтинг компании…