De gratis beschikbare Trends-tool van Google biedt een goudmijn aan zoekgegevens waarmee u uw bedrijf een voorsprong kunt geven. Door deze gegevens op grote schaal te verzamelen, verkrijgt u waardevolle informatie waarmee u de concurrentie te slim af kunt zijn. In deze uitgebreide gids leert u hoe u de superkrachten van Google Trends-scrapen kunt benutten met Python.
Inleiding: Trendgegevens vormen de drijvende kracht achter strategische beslissingen
Google Trends heeft het speelveld gelijk gemaakt door de toegang tot geaggregeerde zoekvolumegegevens te democratiseren. Slimme bedrijven gebruiken Trends steeds vaker om unieke inzichten te verwerven die de basis vormen voor beslissingen met grote impact:
89% van de digitale marketeers vertrouw op Trends voor trefwoordonderzoek volgens recente onderzoeken. De zoekvolumegegevens helpen de inhoud en SEO-strategie te optimaliseren.
Trends hielpen Spotify identificeert onaangeboorde markten om uit te breiden naar Roemenië en Kroatië op basis van muziekzoekpatronen.
Financiële bedrijven zoals Hedgeye Schraap Trends-gegevens over retailmerken om economische prestaties te voorspellen met behulp van zoekinteresse als signaal.
VC's en startups gebruik Trends om de marktvraag naar producten vóór de lancering te kwantificeren en nieuwe zakelijke kansen te identificeren.
Trends zelfs voorspelde pieken in het aantal COVID-gevallen door de stijgende belangstelling voor het zoeken naar symptomen in specifieke regio’s te identificeren.
De toepassingen zijn eindeloos, maar het handmatig opzoeken van gegevens is traag en beperkt. Dat is waar webscraping een rol speelt om het proces te automatiseren en de echte kracht van Trends te ontsluiten.
Een Python-webscraper opzetten
Laten we, voordat we gaan schrappen, de belangrijkste vereisten en hulpmiddelen doornemen:
Leer Python
Vaardigheid in Python is noodzakelijk om een scraper te implementeren. Ik raad aan om eerst online cursussen over de basisprincipes van Python en objectgeoriënteerde concepten te volgen. Enkele goede startersbronnen zijn:
De uitgebreide bibliotheken en eenvoudige syntaxis van Python maken het een perfecte keuze voor webscrapen.
Scraper-bibliotheken
Deze Python-bibliotheken bieden de scraping-mogelijkheden:
Aanvragen – Verzendt HTTP-verzoeken om webpagina's te downloaden. Lichter dan Selenium.
Mooie soep – Parseert HTML- en XML-documenten om gegevens te extraheren met behulp van CSS-selectors en regex.
Selenium – Start en bestuurt browsers zoals Chrome en Firefox voor automatisering. Kan JavaScript-weergaveproblemen omzeilen.
Scrapy – Volledig raamwerk voor grote scrapingprojecten met tools zoals spiders, pijpleidingen en caching.
Voor Google Trends raad ik aan Requests te gebruiken om pagina's op te halen en BeautifulSoup om de HTML te parseren. Scrapy is overdreven voor een schraper voor één site.
volmachten
Om scraperverkeer te maskeren, stuurt u verzoeken door residentiële proxyservers van providers als BrightData, SmartProxy of Oxylabs. Hierdoor verschijnt elk verzoek vanaf een ander residentieel IP-adres.
Configureer proxy's in verzoeken met behulp van Python-bibliotheken zoals PySocks:
import requests
import socks
proxy = "PROXY_HOST:PORT"
socks.set_default_proxy(socks.SOCKS5, proxy)
socket.socket = socks.socksocket
requests.get(‘http://www.example.com‘)
Roterende proxy's zijn de sleutel tot stabiel, langdurig schrapen.
Virtual Environments
Te gebruiken virtuele omgevingen om scraper-afhankelijkheden en -instellingen te isoleren van uw hoofd-Python-installatie. Veel voorkomende keuzes zijn virtualenv
, pipenv
en anaconda.
Bijvoorbeeld:
pip install virtualenv
virtualenv myscraperenv
source myscraperenv/bin/activate
Laten we nu eens kijken naar het daadwerkelijk bouwen van de schraper!
Zoekgegevens extraheren uit Google Trends
De Trends-webapp doet verzoeken aan interne API's om zoekgegevens op te halen. We moeten reverse-engineeren waar deze gegevens zich in de HTML bevinden en deze extraheren.
Laten we stap voor stap doornemen:
Pagina-HTML ophalen
Eerst gebruiken we Verzoeken om de HTML-pagina van de pagina te downloaden:
import requests
url = ‘https://trends.google.com/trends/explore?date=all&q=python‘
response = requests.get(url)
html = response.text
We zouden hier ook Selenium-browserautomatisering kunnen integreren om JavaScript weer te geven.
Parseren met BeautifulSoup
Vervolgens parseren we de HTML en navigeren we door de DOM-boom met behulp van BeautifulSoup:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, ‘html.parser‘)
soup
bevat nu het gestructureerde document.
JSON-gegevens extraheren
De Trends-diagramgegevens bevinden zich in een JavaScript-variabele genaamd window.DATA
. We moeten de onbewerkte JSON-string extraheren:
data = soup.find(‘script‘, text=lambda t: t.startswith(‘window.DATA‘))
data_string = data.text.split(‘window.DATA = ‘)[1].rstrip(‘;‘)
Vervolgens kunnen we het omzetten in een genest Python-woordenboek:
import json
data_json = json.loads(data_string)
Het ontleden van de tijdreeksen
De belangrijkste tijdreeksen voor het zoekvolume voor ons zoekwoord staan hieronder data_json[‘timelineData‘]
. Laten we het extraheren:
import pandas as pd
df = pd.DataFrame(data_json[‘timelineData‘])
print(df.head())
Hiermee worden de eerste paar rijen afgedrukt met de datum, zoekfrequentie en opgemaakte datum.
En voila! We hebben nu programmatische toegang tot Google Trends-gegevens voor elk zoekwoord zonder beperkingen.
Trends op schaal schrapen
Het handmatig extraheren van gegevens voor één zoekwoord is nuttig, maar de echte kracht komt van het schrappen van duizenden termen.
Om Trends voor meerdere trefwoorden te doorzoeken, wikkelen we onze schraper eenvoudigweg in een lus:
keywords = [‘python‘, ‘java‘, ‘c++‘]
dataframes = []
for kw in keywords:
url = f‘https://trends.google.com/trends/explore?date=all&q={kw}‘
# Fetch HTML, extract JSON
# ...
df = pd.DataFrame(data_json[‘timelineData‘])
# Append each keyword‘s dataframe
dataframes.append(df)
# Merge all data
trends_data = pd.concat(dataframes, keys=keywords)
We kunnen ook vertragingen toevoegen tussen verzoeken en foutafhandeling om verantwoord te scrapen:
import time
from random import randint
for kw in keywords:
try:
# Scraper code
time.sleep(randint(3,5))
except Exception as e:
print(f‘Error: {e}‘)
# Pause on failure
time.sleep(60)
Hierdoor worden Google in een redelijk tempo bevraagd om overbelasting van hun servers te voorkomen. Proxy's zullen de verzoeken verder verspreiden.
Captcha's en blokken omzeilen
Scrapers die grote hoeveelheden gegevens proberen te extraheren, kunnen captcha- en botdetectiemaatregelen tegenkomen. Hier zijn bewezen technieken om ze te omzeilen:
Residentiële proxy's
Aanvragen doorsturen residentiële IP's zorgt ervoor dat uw verkeer er menselijker uitziet omdat het afkomstig is van thuisnetwerken. De beste proxyproviders zijn onder meer:
- HelderData – 40 miljoen IP's met 97% uptime en automatisch oplossende captcha's. Prijzen beginnen rond de $ 500/maand.
- SmartProxy – 10 miljoen IP's met speciale Instagram- en sneaker-proxy's. Minimaal ongeveer $ 700/maand.
- oxylabs – 15 miljoen residentiële IP's. Ondersteuning van hoge gelijktijdigheid en volumes. Ongeveer $ 500/maand.
Configureer roterende proxy's in Python met bibliotheken zoals PySocks, Verzoeken en Scrapy.
Browser-automatisering
Selenium kan echte Chrome- of Firefox-browsers aansturen om JavaScript weer te geven en beveiligingen te omzeilen op zoek naar headless tools.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get(url)
html = driver.page_source
driver.quit()
Voor de meeste verdedigingen lijkt dit op een echte browsersessie.
Captcha-oplosdiensten
Tools zoals AntiCaptcha en 2Captcha kan captcha's automatisch oplossen door ze naar menselijke oplossers te sturen. Prijzen beginnen rond de $ 2 per 1000 captcha's, afhankelijk van de snelheid en nauwkeurigheidsbehoeften.
Voorbeeld van Python-integratie:
import twocaptcha
api_key = ‘YOUR_API_KEY‘
solver = twocaptcha.TwoCaptcha(api_key)
try:
result = solver.recaptcha(sitekey=‘SITE_KEY‘, url=‘URL‘)
except twocaptcha.APIError as e:
print(e)
Door een combinatie van proxy's, browsers en captcha-oplossers te gebruiken, kunt u vrijwel elke blokkering helpen voorkomen.
Trendgegevens opslaan en analyseren
Laten we, nu de gegevensextractie geautomatiseerd is, eens kijken naar de opties voor opslag, analyse en visualisatie:
Gestructureerde gegevensformaten
Voor een snelle analyse in Python raad ik aan om geschraapte Trends-gegevens om te zetten in een Panda's dataframe. Dit biedt een tabelstructuur met tijdstempels, zoekvolumes en andere bijbehorende metadata.
We kunnen het dataframe ook exporteren naar formaten zoals CSV or JSON voor draagbaarheid:
trends_df.to_csv(‘trends_data.csv‘, index=False)
Laden in databases
Voor geavanceerdere SQL-query's en het samenvoegen met andere gegevensbronnen laadt u de geschraapte gegevens in een relationele database zoals PostgreSQL or MySQL:
CREATE TABLE trends_data (
date DATE,
keyword VARCHAR(255),
search_volume INT
);
# Insert dataframe rows
trends_df.to_sql(‘trends_data‘, engine, if_exists=‘append‘, index=False)
NoSQL-databases zoals MongoDB werken ook goed voor flexibele JSON-opslag.
Hulpprogramma's voor bedrijfsinformatie
Om interactieve dashboards en visualisaties te bouwen, integreert u Trends-gegevens in tools zoals Tableau, Looker or Power BI. Deze maken rechtstreeks verbinding met databases en spreadsheetformaten.
Met Tableau kun je gemakkelijk trends en patronen ontdekken.
Statistische analyse en modellering
Met Trends-gegevens geladen in Python en Pandas kunnen we tijdreeksanalyses uitvoeren met behulp van bibliotheken zoals StatistiekenModellen en Profeet:
from prophet import Prophet
model = Prophet()
model.fit(trends_df)
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)
Prophet voorspelt toekomstige trends op basis van historische patronen.
We kunnen zelfs ML-modellen bouwen zoals ARIMA en LSTM bovenop de dataset om inzichten te genereren. De mogelijkheden zijn eindeloos!
Trends schrappen ontgrendelt superkrachten
In deze handleiding ziet u hoe u:
- Zet een Python-schraper op met Verzoeken, Selenium, Mooie Soep
- Extraheer tijdreeksgegevens van het zoekvolume door JSON te parseren
- Schraap duizenden trefwoorden met behulp van loops en proxy's
- Bewaar Trends-gegevens in Panda's, CSV, databases
- Analyseer en visualiseer gegevens voor inzichten
Scraping geeft u on-demand toegang tot de krachtige Trends-tool van Google, waardoor unieke concurrentie-informatie wordt ontgrendeld.
Dezelfde technieken kunnen op elke site worden toegepast. Met Trends-gegevens in uw analytics-stack krijgt u inzicht in toekomstige kansen en risico's die uw rivalen ontberen.fetcherviewergefessdger ilnkd tffavfwa
Ik beantwoord altijd graag alle andere vragen over geavanceerd schrapen en proxy's. Gebruik uw nieuwe webscraping-superkrachten op een ethische manier en laat de gegevens uw bedrijf leiden!