Scraping wiadomości na dużą skalę: Google News, RSS i aktualność
Monitorowanie wiadomości psuje się w trzech przewidywalnych miejscach: wyszukiwanie renderowane w JavaScript, limity paginacji i limity szybkości na IP. Oto pipeline, który przetrwa wszystkie trzy — Google News, RSS, deduplikacja i SLA aktualności.
Monitorowanie wiadomości wydaje się rozwiązanym problemem, dopóki nie spróbujesz uruchomić go na tysiącach wydawców co godzinę. Wtedy pojawiają się te same trzy przeszkody, które znany poradnik Scrapy i Selenium napotkał lata temu: wyniki wyszukiwania, których potrzebujesz, są renderowane w JavaScript i wracają puste na zwykłe żądanie HTTP, paginacja jest ograniczona, więc możesz pobrać tylko pierwsze sto wyników na zapytanie, a każdy wydawca ogranicza szybkość na IP, więc pojedynczy crawler zatrzymuje się po kilku setkach żądań. Pipeline do monitorowania mediów, który przetrwa na dużą skalę, to nie jeden sprytny scraper — to warstwowy system odkrywania, ekstrakcji, deduplikacji i aktualności. Ten przewodnik buduje ten system z Google News, RSS i czystą ekstrakcją artykułów, i wskazuje, gdzie leży granica etyki.
Odkrywanie: RSS i pion Google News
Nie możesz monitorować tego, czego nie możesz znaleźć, a przeszukiwanie każdej strony głównej wydawcy jest nieefektywne. Dwa kanały odkrywania wykonują ciężką pracę. Kanały RSS są najtańsze i najczystsze — zatwierdzone przez wydawcę, już ustrukturyzowane i trywialne do sondowania — ale pokrycie jest nierówne, a historia płytka. Pion Google News wypełnia luki: wyświetla historie według tematu i kraju, z już przeanalizowanym źródłem, znacznikiem czasu i fragmentem. Zamiast samodzielnie scrapować interfejs News, zapytaj go przez SERP API, które zwraca pion jako JSON bez parsowania HTML i bez blokowania po twojej stronie:
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"
Uruchamianie tego samego zapytania z różnymi kodami krajów gl to sposób na uchwycenie regionalnego pokrycia jednej historii — technika, która ma znaczenie, ponieważ to samo wydarzenie jest różnie przedstawiane na różnych rynkach. Dla mechaniki, dlaczego News i inne piony opierają się naiwnemu scrapowaniu, zobacz jak działa scrapowanie SERP w 2026.
Ekstrakcja: kiedy artykuł się broni
Odkrywanie daje ci URL-e; ekstrakcja daje ci artykuł. Wiele serwisów informacyjnych nadal serwuje czysty HTML renderowany po stronie serwera, a dla nich wystarczy zwykłe żądanie przez rotujące IP. Jednak główne media coraz częściej renderują artykuł — lub przynajmniej strony wyszukiwania i archiwum — po stronie klienta, więc surowe pobranie zwraca pustą powłokę. To dokładny tryb awarii opisany w pusta strona, brakujące dane. Zamiast uruchamiać flotę przeglądarek bez głowy, przekaż renderowanie do Scraper API, które wykonuje stronę i zwraca czysty markdown gotowy do indeksowania:
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 }
Limit na IP, który zatrzymuje konfiguracje z jednym crawlerem, znika tutaj, ponieważ żądania rozpraszają się automatycznie po rotującej puli rezydencyjnej. Kiedy uruchamiasz własnego crawlera, budżetuj współbieżność na domenę, a nie globalnie — uzasadnienie znajduje się w demistyfikacja limitów szybkości.

Normalizacja i deduplikacja
Brudna rzeczywistość wiadomości z wielu źródeł polega na tym, że ta sama historia dociera wiele razy w niekompatybilnych formach. Daty pojawiają się jako 24 marca 2021, 2 godziny temu i znaczniki czasu ISO w tej samej partii; bylines różnią się formatem; a wiadomości agencyjne z Associated Press lub Reuters są publikowane dosłownie na dziesiątkach stron. Dwa kroki normalizacji ujarzmiają to:
- Przetwórz każdą datę na UTC. Relatywne ciągi jak 'wczoraj' i '3 dni temu' muszą być rozwiązane względem czasu pobrania, inaczej twoja logika aktualności cicho się załamie.
- Deduplikuj przez kanoniczny URL, a następnie przez hash treści. Tag
<link rel="canonical">łączy warianty URL z parametrami śledzenia; hash znormalizowanego ciała łapie zsyndykowane kopie agencyjne, które żyją pod różnymi URL-ami. - Zachowaj mapę źródeł. Przechowuj, które media opublikowały historię, zamiast usuwać duplikaty — 'opublikowane przez 40 mediów' to sam sygnał w monitorowaniu mediów.
SLA aktualności i harmonogramowanie
Monitorowanie mediów ocenia się na podstawie opóźnienia: wzmianka znaleziona sześć godzin później jest bezwartościowa dla reputacji lub użycia handlowego. Zamiast przeszukiwać wszystko na jednym zegarze, podziel swoje sondowanie. Gorące tematy i zapytania o wiadomości z ostatniej chwili są ponownie sondowane co kilka minut; długi ogon rutynowych słów kluczowych działa co godzinę lub codziennie. Traktuj każdy poziom jako SLA aktualności i alarmuj, gdy źródło go nie spełnia — różnica między demonstracją a produkcją polega właśnie na tej warstwie monitorowania, którą omawiamy w uruchamianie scraperów jako oprogramowanie produkcyjne.
Linia paywall
Niektóre z najcenniejszych materiałów znajdują się za subskrypcjami, i tutaj monitorowanie spotyka się z etyką. Zbieranie nagłówków, fragmentów, dat publikacji i publicznych treści artykułów to zwykłe monitorowanie mediów. Omijanie paywalla, aby uzyskać pełny tekst artykułu, za który nie zapłaciłeś, to inny czyn z konsekwencjami dotyczącymi praw autorskich i warunków użytkowania. Trwałe podejście to indeksowanie tego, co jest publicznie serwowane — nagłówek, dek, fragment, metadane — i linkowanie do źródła dla pełnego odczytu, lub licencjonowanie kanałów od wydawców, którzy je sprzedają. To jest informacyjne wskazówki, nie porada prawna; dla czegokolwiek na dużą skalę, potwierdź swoje podejście z prawnikiem.

Często zadawane pytania
Jak scrapować Google News na dużą skalę?
Zapytaj pion Google News przez SERP API zamiast bezpośrednio scrapować interfejs. Przekazujesz zapytanie tematyczne plus parametry gl i hl dla kraju i języka, a otrzymujesz źródła, znaczniki czasu i fragmenty jako JSON. To unika renderowania JavaScript i blokowania IP, które łamią domowe scrapery News, a uruchamianie zapytania przez kody krajów uchwyca regionalne pokrycie tej samej historii.
Czy istnieje darmowe news API do scrapowania artykułów?
Kanały RSS to najbliższa rzecz do darmowego, zatwierdzonego przez wydawcę kanału wiadomości i powinny być twoim pierwszym kanałem odkrywania. Są ustrukturyzowane i tanie do sondowania, ale pokrycie jest niekompletne, a historia płytka. Dla szerokiego, bieżącego pokrycia tysięcy mediów łączysz RSS z wyszukiwaniem wiadomości opartym na SERP i bezpośrednią ekstrakcją artykułów, ponieważ żadne pojedyncze darmowe źródło nie pokrywa całego krajobrazu medialnego.
Dlaczego mój scraper wiadomości zwraca pustą stronę?
Strona renderuje swoją zawartość — często strony wyszukiwania i archiwum — za pomocą JavaScript, więc zwykłe żądanie HTTP otrzymuje pustą powłokę HTML, zanim skrypty się uruchomią. Albo renderuj stronę za pomocą przeglądarkowego lub renderującego scraper API, albo znajdź podstawowy punkt końcowy JSON, który strona wywołuje. Pusty wynik prawie zawsze oznacza renderowanie po stronie klienta, a nie awarię sieci.
Jak deduplikować artykuły wiadomości?
Deduplikuj w dwóch etapach: najpierw połącz warianty URL za pomocą kanonicznego tagu linku strony, aby usunąć kopie z parametrami śledzenia, następnie zhashuj znormalizowane ciało artykułu, aby złapać zsyndykowane historie agencyjne publikowane pod różnymi URL-ami. Zachowaj mapę, które media opublikowały każdą historię, zamiast usuwać duplikaty — w monitorowaniu mediów, rozprzestrzenianie się historii w mediach jest kluczową metryką.
Wiadomości na dużą skalę to nie problem scrapowania, to problem pipeline'u. Podziel odkrywanie, ekstrakcję, normalizację i aktualność na odizolowane etapy, oprzyj się na pionie Google News i RSS dla pokrycia, i pozwól rotującym IP i renderującemu API pochłonąć JavaScript i limity szybkości, które zatapiają konstrukcje z jednym crawlerem. Zrób to, a jedna zmiana układu nigdy nie zniszczy całego systemu.