Из этого руководства вы узнаете:
- Определение термина «парсер новостей», и почему он полезен
- Типы данных, которые можно парсить с его помощью
- Два наиболее распространенных подхода к созданию веб-парсера новостей
- Как создать процесс парсинга новостей с помощью ИИ
- Как создать скрипт парсинга новостей с помощью Python
- Трудности при парсинге новостей
Давайте рассмотрим эти вопросы подробнее!
Что такое парсер новостей?
Парсер новостей — это автоматизированный инструмент для извлечения данных с новостных сайтов. Он собирает такую информацию, как заголовки, даты публикации, авторы, теги и содержание статей.
Парсеры новостей могут быть созданы с использованием ИИ и нескольких языков программирования для веб-парсинга. Они широко используются для исследований, анализа трендов или создания агрегаторов новостей, экономя время по сравнению со сбором данных вручную.
Данные для парсинга из новостных статей
Данные, которые вы можете извлечь из новостных статей, включают:
- Заголовки: основной заголовок и субтитры статьи.
- Дата публикации: дата публикации статьи.
- Автор: имена авторов или журналистов, написавших контент.
- Содержание: основной текст статьи.
- Теги/темы: ключевые слова или категории, относящиеся к статье.
- Мультимедийные вложения: визуальные элементы, сопровождающие статью.
- URL-адреса: ссылки на похожие статьи или ссылки.
- Статьи по теме: другие новости, связанные или похожие на текущую статью.
Как создать парсер новостей
При создании решения для автоматического извлечения данных из новостных статей существует два основных подхода:
- Использование ИИ для извлечения данных
- Создание собственных скриптов парсинга
Давайте представим оба метода и рассмотрим их плюсы и минусы. Подробные шаги по внедрению вы найдете далее в этом руководстве.
Использование ИИ
Идея этого подхода заключается в предоставлении HTML-содержимого новостной статьи модели искусственного интеллекта для извлечения данных. Кроме того, вы можете предоставить URL-адрес новостной статьи поставщику LLM (большая языковая модель) и попросить его извлечь ключевую информацию, такую как заголовок и основной контент.
👍 Плюсы:
- Работает практически на любом новостном сайте
- Автоматизирует весь процесс извлечения данных
- Может сохранять форматирование, например исходный отступ, структуру заголовков, жирный шрифт и другие стилистические элементы
👎 Минусы:
- Усовершенствованные ИИ-модели являются запатентованными и могут быть дорогими
- У вас нет полного контроля над процессом очистки
- Результаты могут включать галлюцинации (неточная или сфабрикованная информация)
Использование собственного скрипта парсинга
Цель здесь состоит в том, чтобы вручную запрограммировтаь бота для парсинга, предназначающегося для определенных сайтов с источниками новостей. Эти скрипты подключаются к целевому сайту, анализируют HTML-код страниц новостей и извлекают из них данные.
👍 Плюсы:
- Вы полностью контролируете процесс извлечения данных
- Может быть адаптирован к конкретным требованиям
- Экономичен, так как не зависит от сторонних поставщиков
👎 Минусы:
- Требуются технические знания для проектирования и обслуживания
- Каждому новостному сайту нужен свой специальный скрипт для парсинга
- Обработка крайних случаев (например, живых статей) может быть сложной задачей
Подход №1: используйте ИИ для парсинга новостей
Идея состоит в том, чтобы использовать ИИ для выполнения тяжелой работы за вас. Это можно сделать напрямую, используя премиальные инструменты LLM, такие как последние версии ChatGPT с возможностями сканирования, или интегрировав модели искусственного интеллекта в свой скрипт. В последнем случае вам также понадобятся технические знания и умение писать базовый сценарий.
Процесс парсинга новостей с помощью ИИ обычно разделяется на следующие этапы:
- Сбор данных: извлечение HTML-кода целевой страницы с помощью HTTP-клиента. Если вы используете такой инструмент, как ChatGPT с функциями сканирования, этот шаг автоматизирован, и вам нужно только передать URL-адрес новости.
- Предварительная обработка данных: при работе с HTML очистите содержимое перед отправкой в искусственный интеллект. Она может включать удаление ненужных скриптов, рекламы или стилей. Сосредоточьтесь на важных частях страницы, таких как заголовок, имя автора и текст статьи.
- Отправка данных в модель искусственного интеллекта: для таких инструментов, как ChatGPT с возможностями просмотра, просто введите URL-адрес статьи вместе с хорошо продуманной подсказкой. ИИ проанализирует страницу и выдаст структурированные данные. Или отправьте очищенный HTML-контент в ИИ-модель и дайте конкретные инструкции о том, что нужно извлечь.
- Обработка выходных данных с помощью ИИ: ответ ИИ часто неструктурирован или полуструктурирован. Используйте свой скрипт для обработки и форматирования выходных данных в желаемом формате.
- Экспорт данных, полученных с помощью парсинга: сохраните структурированные данные в предпочтительном формате, будь то база данных, CSV-файл или другое решение для хранения.
Для получения дополнительной информации прочитайте нашу статью о том, как использовать ИИ для веб-парсинга.
Подход №2: создайте скрипт для парсинга новостей
Чтобы вручную создать парсер новостей, сначала нужно с целевым сайтом. Изучите страницу новостей, чтобы понять ее структуру, какие данные вы можете удалить и какие инструменты для парсинга использовать.
Для простых новостных сайтов этого дуэта должно быть достаточно:
- Requests: библиотека Python для отправки HTTP-запросов. Он позволяет извлекать необработанное HTML-содержимое веб-страницы.
- Beautiful Soup: библиотека Python для анализа документов HTML и XML. Она помогает перемещаться по HTML-структуре страницы и извлекать данные из нее. Узнайте больше в нашем руководстве «Веб-парсинг с помощью Beautiful Soup».
Вы можете установить их в Python с помощью:
pip install requests beautifulsoup4
Для новостных сайтов, использующих технологии защиты от ботов или требующих выполнения JavaScript, необходимо использовать инструменты автоматизации браузера, такие как Selenium. Дополнительные рекомендации см. в нашем руководстве по парсингу с помощью Selenium.
Вы можете установить Selenium в Python с помощью:
pip install selenium
В данном случае процесс выглядит следующим образом:
- Подключитесь к целевому сайту: извлеките HTML-код страницы и проанализируйте его.
- Выберите интересующие элементы: определите конкретные элементы (например, заголовок, контент) на странице.
- Извлечение данных: извлеките нужную информацию из этих элементов.
- Очистите данные, полученные с помощью парсинга: при необходимости обработайте данные, чтобы удалить ненужное содержимое.
- Экспорт данных новостей, полученных с помощью парсинга: сохраните данные в предпочтительном формате, например JSON или CSV.
В следующих главах вы увидите примеры Python-скриптов для парсинга новостей и извлечения данных из CNN, Reuters и BBC!
Парсинг CNN
Целевая новостная статья: «Морозная и сырая погода мучает прохладный северо-восток в преддверии прихода арктического холода на выходных Дня благодарения»
В CNN нет специальных мер по борьбе с парсингом. Поэтому будет достаточно простого скрипта, использующего Requests и Beautiful Soup:
import requests
from bs4 import BeautifulSoup
import json
# URL of the CNN article
url = "https://www.cnn.com/2024/11/28/weather/thanksgiving-weekend-weather-arctic-storm/index.html"
# Send an HTTP GET request to the article page
response = requests.get(url)
# Parse the HTML content of the page
soup = BeautifulSoup(response.content, "html.parser")
# Extract the title
title_element = soup.select_one("h1")
title = title_element.get_text(strip=True)
# Extract the article content
article_content = soup.select_one(".article__content")
content = article_content.get_text(strip=True)
# Prepare the data to be exported as JSON
article = {
"title": title,
"content": content
}
# Export data to a JSON file
with open("article.json", "w", encoding="utf-8") as json_file:
json.dump(article, json_file, ensure_ascii=False, indent=4)
Запустите скрипт, и он создаст JSON-файл, содержащий:
{
"title": "Soggy, sloppy conditions smother the chilly Northeast as an Arctic blast takes aim for Thanksgiving weekend",
"content": "CNN—After the Northeast was hammered by frigid rain or snow on Thanksgiving, a bitter blast of Arctic air is set to envelop much of the country by the time travelers head home this weekend. ... (omitted for brevity)"
}
Ура! Вы только что выполнили парсинг CNN.
Парсинг Reuters
Целевая новостная статья: «Макрон похвалил ремесленников за восстановление собора Нотр-Дам в Париже»
Имейте в виду, что в Reuters есть специальное решение для борьбы с ботами, которое блокирует все запросы, поступающие не из браузера. Если вы попытаетесь сделать автоматический запрос с помощью Requests
или любого другого HTTP-клиента Python, вы получите следующую страницу с ошибкой:
<html><head><title>reuters.com</title><style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style></head><body style="margin:0"><p id="cmsg">Please enable JS and disable any ad blocker</p><script data-cfasync="false">var dd={'rt':'c','cid':'AHrlqAAAAAMAjfxsASop65YALVAczg==','hsh':'2013457ADA70C67D6A4123E0A76873','t':'fe','s':46743,'e':'da7ef98f4db57c2e85c7ae9df5bf374e4b214a77c73ee80d700757e60962367f','host':'geo.captcha-delivery.com','cookie':'lperXjdnamczWV5K~_ghwm4FDVstzxj76zglHEWJSBJjos3qpM2P8Ir0eNn5g9yh159oMTwy9UaWuWgflgV51uAJZKzO7JJuLN~xg2wken37VUTvL6GvZyl89SNuHrSF'}</script><script data-cfasync="false" src="https://ct.captcha-delivery.com/c.js"></script></body></html>
Таким образом, вы должны использовать инструмент автоматизации браузера, такой как Selenium, для сбора новостных статей из Reuters. Вот как:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import json
# Initialize the WebDriver
driver = webdriver.Chrome(service=Service())
# URL of the Reuters article
url = "https://www.reuters.com/world/europe/excitement-relief-paris-notre-dame-cathedral-prepares-reopen-2024-11-29/"
# Open the URL in the browser
driver.get(url)
# Extract the title from the <h1> tag
title_element = driver.find_element(By.CSS_SELECTOR, "h1")
title = title_element.text
# Select all text elements
paragraph_elements = driver.find_elements(By.CSS_SELECTOR, "[data-testid^=\"paragraph-\"]")
# Aggregate their text
content = " ".join(p.text for p in paragraph_elements)
# Prepare the data to be exported as JSON
article = {
"title": title,
"content": content
}
# Export data to a JSON file
with open("article.json", "w", encoding="utf-8") as json_file:
json.dump(article, json_file, ensure_ascii=False, indent=4)
Если вы запустите вышеуказанный скрипт и не заблокируете его, результатом будет следующий файл article.json
:
{
"title": "Macron lauds artisans for restoring Notre-Dame Cathedral in Paris",
"content": "PARIS, Nov 29 (Reuters) - French President Emmanuel Macron praised on Friday the more than 1,000 craftspeople who helped rebuild Paris' Notre-Dame Cathedral in what he called \"the project of the century\", ... (omitted for brevity)"
}
Замечательно! Вы только что выполнили парсинг Reuters.
Парсинг BBC
Целевая новостная статья: «Черная пятница: как распознать сделку и не быть обманутым»
Как и у CNN, у BBC нет специальных решений для борьбы с ботами. Таким образом, подойдет простой скрипт парсинга, использующий HTTP-клиент и дуэт анализаторов HTML:
import requests
from bs4 import BeautifulSoup
import json
# URL of the BBC article
url = "https://www.bbc.com/news/articles/cvg70jr949po"
# Send an HTTP GET request to the article page
response = requests.get(url)
# Parse the HTML content of the page
soup = BeautifulSoup(response.content, "html.parser")
# Extract the title
title_element = soup.select_one("h1")
title = title_element.get_text(strip=True)
# Extract the article content
article_content_elements = soup.select("[data-component=\"text-block\"], [data-component=\"subheadline-block\"]")
# Aggregate their text
content = "\n".join(ace.text for ace in article_content_elements)
# Prepare the data to be exported as JSON
article = {
"title": title,
"content": content
}
# Export data to a JSON file
with open("article.json", "w", encoding="utf-8") as json_file:
json.dump(article, json_file, ensure_ascii=False, indent=4)
Выполните его, и будет создан файл article.json
:
{
"title": "Black Friday: How to spot a deal and not get ripped off",
"content": "The Black Friday sales are already in full swing and it can be easy to get swept up in the shopping frenzy and end up out of pocket - instead of bagging a bargain... (omitted for brevity)"
}
Потрясающе! Вы только что выполнили парсинг BBC.
Трудности при парсинге новостей и способы их преодоления
В приведенных выше примерах мы выбрали несколько новостных сайтов и извлекли из их статей только заголовок и основное содержание. Парсинг мог показаться простым из-за такого упрощения процесса. На самом деле все намного сложнее, поскольку большинство новостных сайтов активно обнаруживают и блокируют ботов:
Некоторые из проблем, которые вам необходимо рассмотреть:
- Убедитесь, что после парсинга статьи сохраняют правильную структуру заголовков
- Не ограничивайтесь заголовками и основным контентом и анализируйте метаданные, такие как теги, авторы и даты публикации
- Автоматизируйте процесс парсинга для эффективной обработки нескольких статей на разных веб-сайтах
Для решения этих проблем вы можете:
- Изучить передовые методы: ознакомьтесь с нашими руководствами по обходу CAPTCHA с помощью Python и ознакомьтесь с учебными пособиями по очистке, чтобы получить практические советы.
- Используйте передовые инструменты автоматизации: используйте надежные инструменты, такие как Playwright Stealth , для очистки сайтов с помощью механизмов защиты от ботов.
Тем не менее, лучшим решением является использование специального API парсера новостей.
API Bright Data News Scraper предлагает универсальное эффективное решение для парсинга ведущих новостных источников, таких как BBC, CNN, Reuters и Google News. С помощью этого API вы можете:
- Извлекайте структурированные данные, такие как идентификаторы, URL-адреса, заголовки, авторы, темы и многое другое
- Масштабируйте свои проекты по парсингу, не беспокоясь об инфраструктуре, прокси-серверах или блокировках веб-сайтов
- Забудьте о блокировках и прерываниях
Упростите процесс парсинга новостей и сосредоточьтесь на самом важном — анализе данных!
Заключение
Из этой статьи вы узнали, что такое парсер новостей и какие данные он может извлекать из новостных статей. Вы также узнали, как создать его с помощью решения на основе ИИ или ручных скриптов.
Каким бы сложным ни был ваш скрипт для сбора новостей, большинство сайтов все равно могут обнаруживать автоматическую активность и блокировать ваш доступ. Решением этой проблемы является специальный API парсера новостей, разработанный специально для надежного извлечения новостных данных с различных платформ.
Эти API предоставляют структурированные и исчерпывающие данные, адаптированные к каждому источнику новостей:
- API парсера CNN: извлекайте данные, такие как заголовки, авторы, темы, даты публикации, контент, изображения, похожие статьи и многое другое.
- API парсера Google News: собирайте информацию, такую как заголовки, темы, категории, авторы, даты публикации, источники и многое другое.
- API парсера Reuters: извлекайте данные, включая идентификаторы, URL-адреса, авторов, заголовки, темы, даты публикации и многое другое.
- API парсера BBC: собирайте информацию, такую как заголовки, авторы, темы, даты публикации, контент, изображения, похожие статьи и многое другое.
Если вы не хотите создавать парсер, обратите внимание на наши готовые к использованию наборы новостных данных. Эти наборы данных предварительно скомпилированы и содержат исчерпывающие записи:
- Новости BBC: набор данных, содержащий все основные элементы данных и насчитывающий десятки тысяч записей.
- Новости CNN: набор данных, включающий все важные элементы данных и насчитывающий сотни тысяч записей.
- Новости Google: набор данных, содержащий все ключевые элементы данных и насчитывающий десятки тысяч записей.
- Новости Reuters: набор данных, содержащий все основные элементы данных и насчитывающий сотни тысяч записей.
Ознакомьтесь со всеми нашими наборами данных для журналистов.
Создайте бесплатный аккаунт Bright Data сегодня, чтобы попробовать наши API парсеров или изучить наши наборы данных.
Кредитная карта не требуется