Nieuws Scraping op Schaal: Google News, RSS & Versheid
Nieuwsmonitoring breekt op drie voorspelbare punten: JavaScript-gerenderde zoekopdrachten, pagineringlimieten en per-IP snelheidslimieten. Hier is de pijplijn die alle drie overleeft — Google News, RSS, deduplicatie en een versheids-SLA.
Nieuwsmonitoring lijkt een opgelost probleem totdat je het probeert uit te voeren over duizend uitgevers elk uur. Dan verschijnen dezelfde drie muren die een bekende Scrapy-en-Selenium handleiding jaren geleden tegenkwam: de zoekresultaten die je nodig hebt, worden gerenderd in JavaScript en komen leeg terug bij een gewone HTTP-verzoek, paginering is beperkt zodat je alleen de eerste honderd resultaten per query kunt ophalen, en elke uitgever beperkt het aantal verzoeken per IP, waardoor een enkele crawler vastloopt na een paar honderd verzoeken. Een mediamonitoringpijplijn die op schaal overleeft, is niet één slimme scraper — het is een gelaagd systeem van ontdekking, extractie, deduplicatie en versheid. Deze gids bouwt dat systeem met Google News, RSS en schone artikel extractie, en markeert waar de ethische grens ligt.
Ontdekking: RSS en de Google News vertical
Je kunt niet monitoren wat je niet kunt vinden, en het crawlen van elke homepage van een uitgever is verspilling. Twee ontdekkingskanalen doen het zware werk. RSS-feeds zijn het goedkoopst en schoonst — door de uitgever goedgekeurd, al gestructureerd en eenvoudig te peilen — maar de dekking is fragmentarisch en de geschiedenis is oppervlakkig. De Google News vertical vult de gaten: het toont verhalen per onderwerp en per land, met bron, tijdstempel en snippet al geparseerd. In plaats van de News-interface zelf te scrapen, kun je deze via de SERP API opvragen, die de vertical als JSON retourneert zonder HTML-parsing en zonder blokkering aan jouw kant:
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"
Het uitvoeren van dezelfde query met verschillende gl landcodes is hoe je regionale dekking van één verhaal vangt — een techniek die belangrijk is omdat hetzelfde evenement anders wordt gepresenteerd in verschillende markten. Voor de mechanica van waarom News en andere verticals naïeve scraping weerstaan, zie hoe SERP scraping werkt in 2026.
Extractie: wanneer het artikel terugvecht
Ontdekking geeft je URL's; extractie geeft je het artikel. Veel nieuwssites serveren nog steeds schone server-gerenderde HTML, en voor die sites is een eenvoudig verzoek via een roterend IP voldoende. Maar grote media renderen steeds vaker het artikel — of tenminste de zoek- en archiefpagina's — client-side, dus een ruwe fetch retourneert een lege huls. Dat is precies de faalmodus die wordt behandeld in lege pagina, ontbrekende gegevens. In plaats van een headless browservloot te draaien, geef je het renderen door aan de Scraper API, die de pagina uitvoert en schone markdown retourneert die klaar is voor indexering:
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 }
De per-IP limiet die single-crawler setups doet vastlopen, verdwijnt hier omdat verzoeken automatisch worden verspreid over een roterende residentiële pool. Wanneer je je eigen crawler draait, budgetteer dan de gelijktijdigheid per domein in plaats van globaal — de redenering staat in snelheidslimieten ontcijferd.

Normalisatie en deduplicatie
De rommelige realiteit van nieuws uit meerdere bronnen is dat hetzelfde verhaal vele malen in incompatibele vormen binnenkomt. Datums verschijnen als 24 maart 2021, 2 uur geleden en ISO-tijdstempels in dezelfde batch; bylines variëren in formaat; en persberichten van de Associated Press of Reuters worden letterlijk hergepubliceerd op tientallen sites. Twee normalisatiestappen temmen dit:
- Parseer elke datum naar UTC. Relatieve strings zoals 'gisteren' en '3 dagen geleden' moeten worden opgelost tegen de ophaaltijd, anders breekt je versheidslogica stilletjes.
- Dedupliceer op canonieke URL, dan op inhoudshash. De
<link rel="canonical">tag vouwt tracking-parameter varianten van één URL samen; een hash van de genormaliseerde body vangt gesyndiceerde persberichten die op verschillende URL's leven. - Houd een bronkaart bij. Bewaar welke outlets een verhaal hebben gebracht in plaats van duplicaten weg te gooien — 'opgepikt door 40 outlets' is op zichzelf een signaal in mediamonitoring.
Versheids-SLA's en planning
Mediamonitoring wordt beoordeeld op latentie: een vermelding die zes uur te laat wordt gevonden, is waardeloos voor reputatie of handelsgebruik. In plaats van alles op één klok te crawlen, deel je je polling in lagen. Heet nieuws en brekend nieuws worden elke paar minuten opnieuw gepolld; de lange staart van routinematige zoekwoorden draait elk uur of dagelijks. Behandel elke laag als een versheids-SLA en alarmeer wanneer een bron deze mist — het verschil tussen een demo en productie is precies deze monitoringslaag, die we behandelen in scrapers als productiesoftware draaien.
De paywall-lijn
Een deel van de meest waardevolle dekking zit achter abonnementen, en hier ontmoet monitoring ethiek. Het verzamelen van koppen, snippets, publicatiedata en openbare artikellichamen is gewone mediamonitoring. Het omzeilen van een paywall om de volledige tekst van een artikel te verkrijgen waarvoor je niet hebt betaald, is een andere handeling met auteursrechtelijke en servicevoorwaarden consequenties. De duurzame aanpak is om te indexeren wat publiekelijk wordt geserveerd — kop, dek, snippet, metadata — en door te linken naar de bron voor de volledige lezing, of feeds te licentiëren van uitgevers die ze verkopen. Dit is informatieve begeleiding, geen juridisch advies; voor alles op schaal, bevestig je aanpak met juridisch advies.

Veelgestelde vragen
Hoe scrape ik Google News op schaal?
Vraag de Google News vertical op via een SERP API in plaats van de interface direct te scrapen. Je geeft een onderwerpquery plus gl en hl parameters voor land en taal door, en krijgt bronnen, tijdstempels en snippets terug als JSON. Dit vermijdt de JavaScript-rendering en IP-blokkering die zelfgemaakte News-scrapers breken, en het uitvoeren van de query over landcodes vangt regionale dekking van hetzelfde verhaal.
Is er een gratis nieuws-API voor het scrapen van artikelen?
RSS-feeds zijn het dichtst bij een gratis, door de uitgever goedgekeurde nieuwsfeed en zouden je eerste ontdekkingskanaal moeten zijn. Ze zijn gestructureerd en goedkoop te peilen, maar de dekking is onvolledig en de geschiedenis is oppervlakkig. Voor brede, actuele dekking over duizenden outlets combineer je RSS met een SERP-gebaseerde nieuwszoekopdracht en directe artikel extractie, aangezien geen enkele gratis bron het hele medialandschap dekt.
Waarom retourneert mijn nieuwsscraper een lege pagina?
De site rendert zijn inhoud — vaak specifiek de zoek- en archiefpagina's — met JavaScript, dus een gewone HTTP-verzoek ontvangt een lege HTML-huls voordat de scripts worden uitgevoerd. Render de pagina met een browser-gebaseerde of rendering scraper API, of vind de onderliggende JSON-endpoint die de pagina aanroept. Een leeg resultaat betekent bijna altijd client-side rendering in plaats van een netwerkfout.
Hoe dedupliceer ik nieuwsartikelen?
Dedupliceer in twee stappen: vouw eerst URL-varianten samen met behulp van de canonieke link-tag van de pagina om tracking-parameter kopieën te verwijderen, en hash vervolgens de genormaliseerde artikelbody om gesyndiceerde persberichten te vangen die op verschillende URL's worden hergepubliceerd. Houd een kaart bij van welke outlets elk verhaal hebben gebracht in plaats van duplicaten direct te verwijderen — in mediamonitoring is de verspreiding van een verhaal over outlets een kernmetric.
Nieuws op schaal is geen scrapingprobleem, het is een pijplijnprobleem. Splits ontdekking, extractie, normalisatie en versheid in geïsoleerde fasen, leun op de Google News vertical en RSS voor dekking, en laat roterende IP's en een rendering API de JavaScript en snelheidslimieten absorberen die single-crawler builds ten onder doen gaan. Doe dat en een lay-outwijziging legt nooit het hele systeem plat.