Meteen naar de inhoud

Hoe u superkrachten kunt ontgrendelen door Google Trends te schrappen

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.

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!

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.

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.

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.

Voorbeeld van een Tableau-dashboard met grafieken

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!

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!

Doe mee aan het gesprek

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *