Сбор новостей в масштабе: Google News, RSS и актуальность
Мониторинг новостей ломается в трех предсказуемых местах: поисковые результаты, рендеренные JavaScript, ограничения пагинации и лимиты запросов на IP. Вот конвейер, который выдерживает все три — Google News, RSS, удаление дубликатов и SLA по актуальности.
Мониторинг новостей кажется решенной задачей, пока вы не попытаетесь запустить его на тысяче издателей каждый час. Тогда появляются те же три стены, на которые наткнулся известный учебник по Scrapy и Selenium несколько лет назад: нужные вам результаты поиска рендерятся в JavaScript и возвращаются пустыми при простом HTTP-запросе, пагинация ограничена, так что вы можете получить только первые сотню результатов на запрос, и каждый издатель ограничивает запросы по IP, так что один скрейпер останавливается после нескольких сотен запросов. Конвейер для мониторинга СМИ, который выживает в масштабе, — это не один умный скрейпер, а многослойная система обнаружения, извлечения, удаления дубликатов и актуальности. Это руководство строит такую систему с использованием Google News, RSS и чистого извлечения статей, и указывает, где проходит этическая граница.
Обнаружение: RSS и вертикаль Google News
Вы не можете мониторить то, что не можете найти, и обход каждой домашней страницы издателя — это пустая трата времени. Два канала обнаружения выполняют основную работу. RSS-ленты — самые дешевые и чистые — санкционированы издателем, уже структурированы и легко опрашиваются, но покрытие неравномерное, а история поверхностная. Вертикаль Google News заполняет пробелы: она показывает истории по темам и странам, с источником, временной меткой и фрагментом, уже разобранными. Вместо того чтобы самостоятельно скрести интерфейс News, запросите его через SERP API, который возвращает вертикаль в формате JSON без разбора HTML и без обработки блокировок с вашей стороны:
curl -G "https://api.quantumproxies.io/serp" \
--data-urlencode "engine=google_news" \
--data-urlencode "q=semiconductor export controls" \
--data-urlencode "gl=us" \
--data-urlencode "hl=en" \
-H "Authorization: Bearer YOUR_API_KEY"
Запуск одного и того же запроса с разными кодами стран gl позволяет вам охватить региональное освещение одной истории — техника, которая важна, потому что одно и то же событие подается по-разному на разных рынках. О механике того, почему News и другие вертикали сопротивляются наивному скрейпингу, смотрите как работает скрейпинг SERP в 2026 году.
Извлечение: когда статья сопротивляется
Обнаружение дает вам URL; извлечение дает вам статью. Многие новостные сайты по-прежнему предоставляют чистый HTML, рендеренный на сервере, и для них достаточно простого запроса через ротационный IP. Но крупные издания все чаще рендерят статью — или, по крайней мере, страницы поиска и архива — на стороне клиента, так что простой запрос возвращает пустую оболочку. Это точный режим отказа, описанный в пустая страница, отсутствующие данные. Вместо того чтобы запускать флот безголовых браузеров, передайте рендеринг Scraper API, который выполняет страницу и возвращает чистый markdown, готовый для индексации:
import requests
def fetch_article(url, api_key):
r = requests.get(
"https://api.quantumproxies.io/scrape",
params={"url": url, "render": "auto", "output": "markdown"},
headers={"Authorization": f"Bearer {api_key}"},
timeout=(5, 40),
)
r.raise_for_status()
return r.json() # { title, byline, published, markdown, canonical }
Лимит на IP, который останавливает одиночные скрейперы, здесь исчезает, потому что запросы распределяются по ротационному пулу резидентных IP автоматически. Когда вы запускаете свой собственный скрейпер, распределяйте параллельные запросы по домену, а не глобально — обоснование в разгадка лимитов запросов.

Нормализация и удаление дубликатов
Грязная реальность многоканальных новостей в том, что одна и та же история приходит много раз в несовместимых формах. Даты появляются как 24 марта 2021, 2 часа назад и ISO-метки времени в одном пакете; форматы подписей варьируются; и новостные материалы от Associated Press или Reuters перепечатываются дословно на десятках сайтов. Два шага нормализации укрощают это:
- Парсите каждую дату в UTC. Относительные строки, такие как 'вчера' и '3 дня назад', должны быть разрешены относительно времени запроса, иначе ваша логика актуальности молча ломается.
- Удаляйте дубликаты по каноническому URL, затем по хэшу контента. Тег
<link rel="canonical">сворачивает варианты URL с параметрами отслеживания; хэш нормализованного тела ловит синдицированные новостные материалы, которые живут на разных URL. - Сохраняйте карту источников. Храните информацию о том, какие издания опубликовали историю, вместо того чтобы удалять дубликаты — 'подхвачено 40 изданиями' само по себе является сигналом в мониторинге СМИ.
SLA по актуальности и расписание
Мониторинг СМИ оценивается по задержке: упоминание, найденное с опозданием в шесть часов, бесполезно для репутации или торговли. Вместо того чтобы сканировать все по одному расписанию, разделите опросы по уровням. Горячие темы и запросы по срочным новостям перепроверяются каждые несколько минут; длинный хвост рутинных ключевых слов запускается ежечасно или ежедневно. Рассматривайте каждый уровень как SLA по актуальности и предупреждайте, когда источник его не соблюдает — разница между демонстрацией и производством заключается именно в этом слое мониторинга, который мы освещаем в запуск скрейперов как производственного программного обеспечения.
Линия платной стены
Некоторые из самых ценных материалов находятся за подписками, и здесь мониторинг встречается с этикой. Сбор заголовков, фрагментов, дат публикации и публичных тел статей — это обычный мониторинг СМИ. Обход платной стены для получения полного текста статьи, за которую вы не заплатили, — это другое действие с последствиями для авторских прав и условий использования. Надежный подход — индексировать то, что публично доступно — заголовок, дек, фрагмент, метаданные — и ссылаться на источник для полного прочтения, или лицензировать ленты у издателей, которые их продают. Это информативное руководство, а не юридическая консультация; для чего-либо в масштабе подтвердите свой подход с юристом.

Часто задаваемые вопросы
Как скрести Google News в масштабе?
Запрашивайте вертикаль Google News через SERP API, а не скрести интерфейс напрямую. Вы передаете запрос по теме плюс параметры gl и hl для страны и языка и получаете источники, временные метки и фрагменты в формате JSON. Это избегает рендеринга JavaScript и блокировки IP, которые ломают самодельные скрейперы News, а запуск запроса по кодам стран охватывает региональное освещение одной и той же истории.
Существует ли бесплатный news API для скрейпинга статей?
RSS-ленты — это самое близкое к бесплатной, санкционированной издателем новостной ленте и должны быть вашим первым каналом обнаружения. Они структурированы и дешевы для опроса, но покрытие неполное, а история поверхностная. Для широкого, актуального покрытия по тысячам изданий вы комбинируете RSS с новостным поиском на основе SERP и прямым извлечением статей, так как ни один бесплатный источник не охватывает весь медиаландшафт.
Почему мой скрейпер новостей возвращает пустую страницу?
Сайт рендерит свой контент — часто именно страницы поиска и архива — с помощью JavaScript, так что простой HTTP-запрос получает пустую HTML-оболочку до выполнения скриптов. Либо рендерьте страницу с помощью браузерного или рендеринг скрейпер API, либо найдите основной JSON-эндпоинт, который вызывает страница. Пустой результат почти всегда означает рендеринг на стороне клиента, а не сетевой сбой.
Как удалять дубликаты новостных статей?
Удаляйте дубликаты в два прохода: сначала сворачивайте варианты URL с помощью канонического тега ссылки страницы, чтобы удалить копии с параметрами отслеживания, затем хэшируйте нормализованное тело статьи, чтобы поймать синдицированные новостные материалы, перепечатанные на разных URL. Сохраняйте карту, какие издания опубликовали каждую историю, вместо того чтобы удалять дубликаты — в мониторинге СМИ распространение истории по изданиям является основным показателем.
Новости в масштабе — это не проблема скрейпинга, это проблема конвейера. Разделите обнаружение, извлечение, нормализацию и актуальность на изолированные этапы, опирайтесь на вертикаль Google News и RSS для покрытия, и пусть ротационные IP и рендеринг API поглощают JavaScript и лимиты запросов, которые топят одиночные скрейперы. Сделайте это, и одно изменение макета никогда не выведет из строя всю систему.