Currently set to Index
Currently set to Follow

Resultatenpagina’s van zoekmachines op grote schaal analyseren

15 min


119
facebook chatbots

Als een SEO-professional weet je dat een groot deel van je werk het bijhouden van ranglijsten in de SERP’s is, evenals die van concurrenten. Ik ga een manier delen om SERP-gegevens te verkrijgen en deze in een DataFrame (tabel / CSV / Excel-blad) te importeren voor analyse, op grote schaal en op een geautomatiseerde manier.

Ik zal de programmeertaal Python gebruiken, dus er zal wat codering bij betrokken zijn. Als u geen programmering kent, kunt u de onderstaande codefragmenten negeren, omdat u ze niet hoeft te begrijpen om mee te volgen.

Dus hoe gaan we de gegevens precies verzamelen en wat gaan we ermee doen? Laten we het uitzoeken.

Gegevens importeren 

De aangepaste zoekmachine van Google is een service waarmee u uw eigen aangepaste zoekmachine kunt maken, waar u de sites kunt opgeven die u wilt doorzoeken en uw eigen relevantie-regels kunt instellen (als u geen specifieke regels instelt, zal uw aangepaste zoekmachine zoek in wezen standaard op het hele web).

U kunt uw inspanningen verder stroomlijnen door parameters op te geven voor uw zoekopdrachten, waaronder de locatie van de gebruiker, de taal van de site, afbeeldingen zoeken en nog veel meer.

Je kunt de gegevens ook programmatisch ophalen via de API, wat we hier gaan doen.

Hier zijn de stappen om een ​​account in te stellen om gegevens te importeren (sla over als u de code niet zelf wilt uitvoeren):

  1. Maak een aangepaste zoekmachine . In het begin wordt u mogelijk gevraagd om een ​​site in te voeren om te zoeken. Voer een willekeurig domein in, ga dan naar het configuratiescherm en verwijder het. Zorg ervoor dat u “Zoeken op het hele web” en afbeeldingen zoeken inschakelt. U moet ook uw zoekmachine-ID ophalen, die u kunt vinden op de pagina van het configuratiescherm.
  2. Schakel de aangepaste zoek-API in . Met de service kunt u zoekresultaten van uw aangepaste zoekmachine programmatisch ophalen en weergeven. U moet hiervoor eerst een project maken.
  3. Maak referenties voor dit project  zodat u uw sleutel kunt krijgen.
  4. Schakel facturering voor uw project in  als u meer dan 100 zoekopdrachten per dag wilt uitvoeren. De eerste 100 zoekopdrachten zijn gratis; vervolgens betaalt u voor elke 1.000 extra vragen USD $ 5.

Programmeeromgeving

Voor deze analyse gebruik ik het Jupyter Notebook als mijn editor. Als u er niet bekend mee bent, is het in feite een browsergebaseerd hulpmiddel dat normale tekst, programmeercode en de uitvoer van de code combineert. De uitvoer kan tekst, tabellen en afbeeldingen zijn (dit kunnen gegevensvisualisaties zijn, zoals u hieronder zult zien).
Je kunt het hier proberen om te zien hoe het werkt als je geïnteresseerd bent.

Het lijkt veel op een tekstverwerker en is geweldig voor het uitvoeren van analyses, het maken van campagnes en algemeen programmeerwerk. Ik gebruik het voor bijna al mijn werk.

Door u toe te staan ​​de stappen op te slaan die u hebt gemaakt door een kopie van de code te bewaren, kunt u met het notebook teruggaan en zien hoe u tot uw conclusies bent gekomen en of er fouten zijn of gebieden die moeten worden verbeterd. Verder kunnen anderen verder werken aan de analyse vanaf het punt waar u was gebleven.

Het notitieboek bevat tekstvakken die “cellen” worden genoemd. Hier kunt u gewone tekst of code invoeren. Hier is hoe het wordt weergegeven, inclusief een korte beschrijving van de cellen.

Jupyter Notebook-code en afmeldingscellen

Hier is een eenvoudige gegevensvisualisatie en een uitleg van wat de code eronder doet: 

Jupyter Notebook datavisualisatie

Regel 1: Een pakket importeren maakt het eenvoudig beschikbaar, zoals het starten van een applicatie op uw computer. Hier importeren we een pakket met de naam “matplotlib” met de submodule “pyplot” die wordt gebruikt voor gegevensvisualisatie. Omdat de naam vrij lang en vervelend is om te typen telkens wanneer we een opdracht willen uitvoeren, importeren we het als “plt” als een snelkoppeling, die u kunt zien in regels 6 – 10.

Elke keer als we een opdracht van matplotlib willen uitvoeren, zeggen we gewoon “plt. <command_name>” om dat te doen, bijvoorbeeld “plt.plot”.

Lijnen 3 en 4: Hier definiëren we twee variabelen, “x” en “y”, waarbij elk een lijst met getallen is die we willen plotten. Het “=” -teken is hier een ‘toewijzings’-operator en wordt niet gebruikt zoals in de wiskundige zin. U definieert in dit geval een lijst met nummers [1, 2, 3, 4, 5] en noemt dit “x”. Zie het als een snelkoppeling, zodat u weet wat deze lijst is, zodat u niet elke keer alle cijfers hoeft te typen. 

Regel 6: We plotten eenvoudigweg “x” en “y”.

Regels 7, 8 en 9: hier voegen we een paar opties toe en er zijn een aantal beschikbare opties zoals u later in de tutorial zult zien. De resultaten van die instellingen kunnen in de grafiek worden gezien als de titel, “xlabel” en “ylabel”.

Regel 10: toont de plot.

In “[5]”: hiermee wordt  de cel geïdentificeerd als een invoercel. Dit was de vijfde instructie die ik heb uitgevoerd en daarom staat hier het cijfer 5. 

Het uitvoeren van die coderegels levert de bovenstaande grafiek op.

Hieronder heb ik links toegevoegd naar alle gebruikte datasets, evenals het notitieboek voor deze tutorial als je geïnteresseerd bent, in één repository. Alle stappen die ik heb genomen om de data te importeren, te manipuleren en te visualiseren zijn hier opgenomen, dus u ziet de volledige code die deze resultaten heeft opgeleverd. Zoals gezegd, als je niet bekend bent met Python, kun je de code negeren en volgen. 

Omgaan met de gegevens

We zullen drie Python-pakketten gebruiken voor ons werk:

  • advertools : Om verbinding te maken met de Google CSE API en SERP’s te ontvangen in een tabelformaat . (Dit is een pakket dat ik heb geschreven en onderhoud. Het heeft een heleboel productiviteits- en analysehulpmiddelen voor online marketing.)
  • panda’s : voor gegevensmanipulatie, hervormen, samenvoegen, sorteren, enz.
  • matplotlib : voor gegevensvisualisatie.

Om u een snel idee te geven, is hier een voorbeeld van de aangepaste SERP-resultaten waarmee we zullen samenwerken:

import pandas as pd serp_flights = pd.read_csv('serp_flights.csv') serp_flights.head()

SERP resulteert in een voorbeeld van een Excel-blad

Niet alle kolommen zijn zichtbaar, maar ik wil graag een paar opmerkingen delen over de verschillende beschikbare kolommen:

“queryTime” is de tijd dat de query werd uitgevoerd (toen ik het verzoek deed); dit verschilt van ‘searchTime’ , de hoeveelheid tijd die Google nodig had om de zoekopdracht uit te voeren (meestal minder dan een seconde). De meeste hoofdkolommen zullen er altijd zijn, maar als u verschillende parameters doorgeeft, hebt u meer of minder kolommen. U zou bijvoorbeeld kolommen hebben die de afbeeldingen beschrijven, voor het geval dat u het type zoekopdracht als “afbeelding” opgeeft.

De gegevensset

We gaan de ticketsindustrie van de luchtvaartmaatschappij bekijken, en hier zijn de details:

  • Bestemmingen : ik heb de top 100 vluchtbestemmingen van Wikipedia verkregen en als basis voor de vragen gebruikt.
  • Sleutelwoorden : Elke bestemming werd voorafgegaan door twee variaties, dus we zullen kijken naar “vluchten naar bestemming” en “tickets naar bestemming”.
  • Landen : Elke variatie daarop werd aangevraagd voor een van de twee Engelstalige landen, de Verenigde Staten en het Verenigd Koninkrijk.
  • SERP’s : natuurlijk bevat elk resultaat tien links, samen met hun metadata.

 Als gevolg hiervan hebben we 100 bestemmingen x 2 variaties x 2 landen x 10 resultaten = 4.000 rijen met gegevens.

We beginnen met het importeren van de pakketten die we zullen gebruiken en definiëren onze Google CSE ID en sleutel:

%config InlineBackend.figure_format = 'retina' import matplotlib.pyplot as plt import advertools as adv import pandas as pd pd.set_option('display.max_columns', None) cx = 'YOUR_GOOGLE_CUSTOM_SEARCH_ENGINE_ID' key = 'YOUR_GOOGLE_DEVELOPER_KEY'

Nu kunnen we de Wikipedia-tabel importeren die de topbestemmingen toont, samen met enkele aanvullende gegevens:

top_dest = pd.read_html('https://en.wikipedia.org/wiki/List_of_cities_by_international_visitors',  header=0)[0] top_dest.head().style.format({'Arrivals 2016Euromonitor': '{:,}'})

Top toeristische bestemmingen

Vervolgens kunnen we de zoekwoorden maken door de twee hierboven genoemde variaties samen te voegen:

cities = top_dest['City'].tolist() queries = ['flights to ' + c.lower() for c in cities] + ['tickets to ' + c.lower() for c in cities] queries[:3] + queries[-3:] + ['etc...']
['flights to hong kong','flights to bangkok','flights to london','tickets to washington d.c.','tickets to chiba','tickets to nice','etc...']

Met de belangrijkste parameters gedefinieerd, kunnen we de aanvragen nu als volgt naar Google verzenden:

serp_flights = adv.serp_goog(cx=cx, key=key, q=queries, gl=['us', 'uk'])# imports data serp_flights = pd.read_csv('serp_flights.csv',parse_dates=['queryTime'])# saves it in a csv file serp_us = serp_flights[serp_flights['gl'] == 'us'].copy() # create a subset for US serp_uk = serp_flights[serp_flights['gl'] == 'uk'].copy() # create a subset for UK

Laten we nu snel de topdomeinen bekijken:

print('Domain Summary - Overall') (serp_flights.pivot_table('rank', 'displayLink',  aggfunc=['count', 'mean']).sort_values([('count', 'rank'), ('mean', 'rank')],  ascending=[False, True]).assign(coverage=lambda df: df[('count', 'rank')] / len(serp_flights)*10).head(10).style.format({("coverage", ''): "{:.1%}", ('mean', 'rank'): '{:.2f}'}))

Top 10 domeinen – vluchten en tickets

Zoals u ziet, omdat we vooral geïnteresseerd zijn in de rangschikking van domeinen, hebben we deze samengevat in drie belangrijke statistieken:

1. Aantal: het aantal keren dat het domein is weergegeven in de zoekopdrachten die we hebben uitgevoerd.

Mea : de gemiddelde (gemiddelde) rang van elk van de domeinen.

3. Dekking: het aantal gedeeld door het aantal vragen.

De bovenstaande draaitabel is voor alle resultaten en geeft ons een snel overzicht. Ik denk echter dat het zinvoller is om de gegevens op te splitsen in twee verschillende draaitabellen, één voor elk van de landen:

print('Domain Summary - US') (serp_flights[serp_flights['gl']=='us'].pivot_table('rank', 'displayLink',  aggfunc=['count', 'mean']).sort_values([('count', 'rank'), ('mean', 'rank')],  ascending=[False, True]).assign(coverage=lambda df: df[('count', 'rank')] / len(serp_flights)*10 * 2).head(10).style.format({("coverage", ''): "{:.1%}", ('mean', 'rank'): '{:.2f}'}))

Top 10 domeinen – vluchten en tickets Verenigde Staten

Voor dekking heb ik gedeeld door 400 in de eerste tabel, maar voor de landen deel ik door 200, omdat we geïnteresseerd zijn in vragen voor dat land. Een interessant punt is dat kayak.com een ​​lagere dekking heeft dan tripadvisor.com, maar een hogere gemiddelde rang. In topposities is het verschil tussen positie twee en drie qua waarde behoorlijk groot. Afhankelijk van uw geval, kunt u de ene of de andere waarde waarderen.

print('Domain Summary - UK') (serp_flights[serp_flights['gl']=='uk'].pivot_table('rank', 'displayLink',  aggfunc=['count', 'mean']).sort_values([('count', 'rank'), ('mean', 'rank')],  ascending=[False, True]).assign(coverage=lambda df: df[('count', 'rank')] / len(serp_flights)*10*2).head(10).style.format({("coverage", ''): "{:.1%}", ('mean', 'rank'): '{:.2f}'}))

Top 10 domeinen vluchten en tickets – Verenigd Koninkrijk

Een dekking van 108% betekent dat skyskanner.net bij alle zoekopdrachten is verschenen en in sommige gevallen meer dan eens in dezelfde SERP verscheen. Merk op dat hun gemiddelde rang 1,45 is, veel hoger dan het tweede domein. Geen grapje met SkySkanner!

Nu we een idee hebben van het aantal keren dat de websites zijn weergegeven in de zoekresultaten en de gemiddelde rangen die ze hebben, is het misschien ook goed om de gegevens te visualiseren, zodat we kunnen zien hoe deze worden verspreid.

Om dit te bepalen, krijgen we eerst de top 10 domeinen voor elk land en definiëren we twee nieuwe DataFrames (tabellen) die alleen de gefilterde gegevens bevatten, en visualiseren dan:

top10_domains = serp_flights.displayLink.value_counts()[:10].index top10_df = serp_flights[serp_flights['displayLink'].isin(top10_domains)]

top10_domains_us = serp_us.displayLink.value_counts()[:10].index top10_df_us = serp_flights[serp_flights['displayLink'].isin(top10_domains_us)]

top10_domains_uk = serp_uk.displayLink.value_counts()[:10].index top10_df_uk = serp_flights[serp_flights['displayLink'].isin(top10_domains_uk)]

fig, ax = plt.subplots(facecolor='#ebebeb') fig.set_size_inches(15, 9) ax.set_frame_on(False) ax.scatter(top10_df['displayLink'].str.replace('www.', ''), top10_df['rank'], s=850, alpha=0.02, edgecolor='k', lw=2) ax.grid(alpha=0.25) ax.invert_yaxis() ax.yaxis.set_ticks(range(1, 11)) ax.tick_params(labelsize=15, rotation=9, labeltop=True,labelbottom=False) ax.set_ylabel('Search engine results page rank', fontsize=16) ax.set_title('Top 10 Tickets and Flights Domains', pad=75, fontsize=24) ax.text(4.5, -0.5, 'Organic Search Rankings for 200 Keywords in US & UK',  ha='center', fontsize=15) fig.savefig(ax.get_title() + '.png',  facecolor='#eeeeee', dpi=150, bbox_inches='tight') plt.show()

Top 10 tickets en vluchten SERP-visualisatie

Voor elk uiterlijk op een SERP plotten we een zeer lichte cirkel in de positie waar dat domein verscheen (van één tot tien). Hoe vaker een domein verschijnt, hoe donkerder de cirkel. Bijvoorbeeld, kayak.com, expedia.com en skyskanner.net hebben effen blauwe cirkels op positie één, en lichtere in verschillende posities.

Een klein probleem in deze analyse tot nu toe is dat alle zoekwoorden gelijk worden behandeld. Het aantal toeristen in de top honderd-lijst varieert van 2 tot 26 miljoen, dus ze zijn duidelijk niet gelijk. Ook kunt u voor uw specifieke geval uw eigen set van de “top 100” hebben op basis van de website waaraan u werkt. Maar aangezien we de industrie verkennen en proberen de posities van de verschillende spelers te begrijpen, vind ik het geen slechte veronderstelling. Houd dit in gedachten wanneer u een vergelijkbare analyse uitvoert voor een specifiek geval.

Zoals hierboven was dit voor de algemene gegevens en hieronder is dezelfde visualisatie opgesplitst per land:

top10_dfs = [top10_df_us, top10_df_uk] colors = ['darkred', 'olive'] suffixes = [' - US', ' - UK'] fig, ax = plt.subplots(2, 1, facecolor='#ebebeb') fig.set_size_inches(15, 18) for i in range(2): ax[i].set_frame_on(False) ax[i].scatter(top10_dfs[i]['displayLink'].str.replace('www.', ''),  top10_dfs[i]['rank'], s=850, alpha=0.02,  edgecolor='k', lw=2, color='darkred') ax[i].grid(alpha=0.25) ax[i].invert_yaxis() ax[i].yaxis.set_ticks(range(1, 11)) ax[i].tick_params(labelsize=15, rotation=12, labeltop=True,labelbottom=False) ax[i].set_ylabel('Search engine results page rank', fontsize=16) ax[i].set_title('Top 10 Tickets and Flights Domains' + suffixes[i],  pad=75, fontsize=24) ax[i].text(4.5, -0.5, 'Organic Search Rankings for 200 Keywords',  ha='center', fontsize=15) plt.tight_layout() fig.savefig(ax[i].get_title() + '.png',  facecolor='#eeeeee', dpi=150, bbox_inches='tight') plt.show()

Top 10 tickets en vluchten SERP-visualisatie: VS versus VK

Inhoud hoeveelheid

Er is een scala aan inhoudsstatistieken waarmee u rekening moet houden, maar degene die u misschien interesseert, is hoeveel pagina’s elk domein heeft voor de verschillende steden. Ervan uitgaande dat de inhoud echt is, en met een minimaal kwaliteitsniveau, volgt hieruit dat hoe meer inhoud je hebt, hoe groter de kans dat je op SERP’s verschijnt – vooral voor trefwoordvariaties en de verschillende combinaties die gebruikers kunnen bedenken.

Een van de parameters van het verzoek dat door Google is toegestaan, is het specificeren van de site waarin u wilt zoeken, en u kunt die site opnemen of uitsluiten. Dus als we zoeken naar “tickets naar hong kong” en “siteSearch = www.tripadvisor.com” opgeven met “siteSearchFilter = i” (voor “include”), krijgen de zoekresultaten alleen voor die site. Een belangrijke kolom die bij elke reactie wordt geleverd, is “totalResults”, die aangeeft hoeveel pagina’s Google voor die zoekopdracht heeft. Aangezien die zoekopdracht beperkt is tot een bepaald domein en betrekking heeft op een specifiek trefwoord, kunnen we achterhalen hoeveel pagina’s van dat domein in aanmerking komen om voor dat trefwoord te verschijnen.

Ik heb de vragen voor de top vijf bestemmingen en voor de twee landen uitgevoerd:

pagesperdomain_us = adv.serp_goog(cx=cx, key=key, q=queries[:5],  siteSearch=top10_domains_us.tolist(),  siteSearchFilter='i', num=1) pagesperdomain_uk = adv.serp_goog(cx=cx, key=key, q=queries[:5],  siteSearch=top10_domains_uk.tolist() ,  siteSearchFilter='i', num=1)

Hier zijn de eerste tien resultaten uit de VS voor “vluchten naar hong kong”, en hieronder is een visualisatie voor elk van de zoekwoorden en de landen van bestemming:

(pagesperdomain_us[['searchTerms', 'displayLink', 'totalResults']].head(10).style.format({'totalResults': '{:,}'}))

SERP aantal resultaten

from matplotlib.cm import tab10 from matplotlib.ticker import EngFormatter fig, ax = plt.subplots(5, 2, facecolor='#eeeeee') fig.set_size_inches(17, 20) countries = [' - US', ' - UK'] pages_df = [pagesperdomain_us, pagesperdomain_uk] for i in range(5): for j in range(2): ax[i, j].set_frame_on(False) ax[i, j].barh((pages_df[j][pages_df[j]['searchTerms']== queries[i]].sort_values('totalResults')['displayLink'].str.replace('www.', '')), (pages_df[j][pages_df[j]['searchTerms']== queries[i]].sort_values('totalResults')['totalResults']), color=tab10.colors[i+5*j]) ax[i, j].grid(axis='x') ax[i, j].set_title('Pages per domain. Keyword: "' +queries[i] + '"' + countries[j],fontsize=15) ax[i, j].tick_params(labelsize=12) ax[i, j].xaxis.set_major_formatter(EngFormatter()) plt.tight_layout() fig.savefig('Pages per domain' + '.png',  facecolor='#eeeeee', dpi=150, bbox_inches='tight') plt.show()

Aantal pagina’s per domein

Zoals u kunt zien, kan het verschil in sommige gevallen dramatisch zijn en het correleert niet altijd met topposities. Voel je vrij om verder te analyseren of probeer andere zoekwoorden als je geïnteresseerd bent.

Titels analyseren

Er zijn veel manieren om titels (en fragmenten) te analyseren, maar in dit geval trok een specifiek ding mijn aandacht en ik denk dat het heel belangrijk is in deze branche. Veel sites hebben de prijs van de tickets in de titel van de pagina, die niet alleen zichtbaar is in SERP’s, maar een van de belangrijkste factoren is die mensen aanmoedigt of ontmoedigt om te klikken.

Bijvoorbeeld:

serp_flights[serp_flights['searchTerms'] == 'flights to paris'][['searchTerms', 'title']].head(10)

Vluchten naar Parijs SERP-titels

Laten we nu de prijzen en valuta’s extraheren, zodat we verdere analyse kunnen doen.

serp_flights['price'] = (serp_flights['title'].str.extract('[$£](\d+,?\d+\.?\d+)')[0].str.replace(',', '').astype(float)) serp_flights['currency'] = serp_flights['title'].str.extract('([$£])') serp_flights[['searchTerms', 'title', 'price', 'currency', 'displayLink']].head(15)

SERP-titels met prijzen

Nu hebben we twee nieuwe kolommen, “prijs” en “valuta”. In sommige gevallen is er geen prijs in de titel (“NaN” voor niet een nummer), maar voor anderen zijn er dollar- en pondtekens. Sommige sites tonen ook de prijzen in andere valuta’s, maar omdat ze erg klein zijn, is het niet logisch om deze te vergelijken, vooral als er grote verschillen in hun waarden zijn. We hebben dus alleen te maken met dollars en ponden.

Voor de top vijf zoekopdrachten kunnen we de verschillende prijzen plotten (indien beschikbaar) en een snel overzicht krijgen van hoe de prijzen zich verhouden.

Hier is een snelle prijsvergelijkingsmotor voor u:

fig, ax = plt.subplots(5, 2, facecolor='#eeeeee') fig.set_size_inches(17, 20) countries = [' - US ($)', ' - UK (£)'] country_codes = ['us', 'uk'] currency = ['$', '£'] top10dfs = [top10_domains_us, top10_domains_uk] for i in range(5): for j in range(2): ax[i, j].grid() ax[i, j].set_frame_on(False) df = serp_flights[(serp_flights['gl'] == country_codes[j]) &  (serp_flights['searchTerms'] == queries[i]) & (serp_flights['currency'] == currency[j])] for country in top10dfs[j]:

ax[i, j].scatter(df.sort_values('totalResults')['displayLink'].str.replace('www.', ''),df.sort_values('totalResults')['price'],color=tab10.colors[i+5*j], s=300) ax[i, j].set_title('Price per domain. Keyword: "' +queries[i] + '"' + countries[j],fontsize=15) ax[i, j].tick_params(labelsize=12, rotation=9, axis='x') plt.tight_layout() fig.savefig('Prices per domain' + '.png',  facecolor='#eeeeee', dpi=150, bbox_inches='tight') plt.show()

Ticketprijzen per domein

Om een ​​algemeen overzicht van de prijzen voor de topdomeinen te krijgen, kunnen we ook alle instanties plotten waarin een prijs in de titel van een SERP verschijnt, zodat we kunnen zien hoe prijzen globaal per domein kunnen worden vergeleken:

fig, ax = plt.subplots(1, 2, facecolor='#eeeeee') fig.set_size_inches(17, 8) countries = [' - US ($)', ' - UK (£)'] country_codes = ['us', 'uk'] currency = ['$', '£'] top10dfs = [top10_domains_us, top10_domains_uk] for j in range(2): ax[j].grid() ax[j].set_frame_on(False) df = serp_flights[(serp_flights['gl'] == country_codes[j]) &  (serp_flights['currency'] == currency[j]) & (serp_flights['displayLink'].isin(top10dfs[j]))] ax[j].scatter(df.sort_values('totalResults')['displayLink'].str.replace('www.', ''),df.sort_values('totalResults')['price'] ,color=tab10.colors[j],  s=300, alpha=0.1) ax[j].set_title('Prices per domain'+ countries[j],fontsize=21) ax[j].tick_params(labelsize=18, rotation=18, axis='x') ax[j].tick_params(labelsize=18, axis='y') plt.tight_layout() fig.savefig('Prices per country' + '.png',  facecolor='#eeeeee', dpi=150, bbox_inches='tight') plt.show()

Ticketprijzen per domein per land

In de VS heeft expedia.com duidelijk lagere prijzen, en een groot deel daarvan is minder dan $ 200. Tripadvisor.com lijkt gemiddeld de hoogste, maar ze hebben ook een hoger bereik van schommelingen in vergelijking met anderen. Opodo.co.uk is duidelijk de goedkoopste voor het VK, met bijna al zijn prijzen onder £ 200.

Houd er rekening mee dat de twee kaarten verschillende Y-assen hebben en prijzen met verschillende valuta’s tonen. Op het moment van schrijven is het GBP ongeveer $ 1,30; dit betekent niet noodzakelijkerwijs dat expedia.com feitelijk lagere prijzen heeft, omdat het gebaseerd kan zijn op “vanaf” of op bepaalde voorwaarden, enz., Maar dit zijn hun geadverteerde prijzen op SERP’s.

Gluren naar snippets

Net als bij titels kunnen we een vergelijkbare analyse van fragmenten maken. Eén site trok mijn aandacht met de tekst van hun fragmenten, en dat is kayak.com.

Hieronder vindt u een voorbeeld van hun fragmenten. Merk op dat ze de namen, prijzen en bestemmingen van luchtvaartmaatschappijen vermelden, hoewel de zoekopdrachten niet aangeven waar de gebruiker vandaan vliegt. Merk ook op dat ze verschillend zijn voor elke zoekopdracht. Voor de bestemming Hong Kong specificeren zij vluchten vanuit San Francisco en New York, terwijl voor de bestemming Dubai New York, Chicago en Orlando worden gespecificeerd.

Het lijkt erop dat ze de tekst van de fragmenten dynamisch hebben gegenereerd op basis van de meest frequente plaatsen waar mensen kaartjes kopen en de luchtvaartmaatschappijen die ze voor die bestemmingen gebruiken; dit kan een interessant inzicht in de markt zijn, of op zijn minst de visie van Kayak op de markt en hoe zij zich positioneren. Misschien wilt u de kajakfragmenten exporteren en een kaart genereren tussen bron- en bestemmingssteden, evenals de luchtvaartmaatschappijen waarmee ze het meest worden geassocieerd.

serp_flights[serp_flights['displayLink'] == 'www.kayak.com'][['snippet']][:10]`

Fragmenttekst in SERP’s

Laatste gedachten

Dit artikel was een kort overzicht van hoe de Custom Search Engine van Google kan worden gebruikt om een ​​groot aantal rapporten te automatiseren en een paar ideeën over wat kan worden geanalyseerd.

Er zijn nog andere dingen die u zou kunnen overwegen:

  • Voer regelmatig hetzelfde rapport uit: meestal zijn we niet alleen geïnteresseerd in een momentopname van waar we staan. We willen weten hoe onze pagina’s in de loop van de tijd presteren. U kunt dus bijvoorbeeld één keer per maand hetzelfde rapport uitvoeren en grafieken maken die laten zien hoe posities in de tijd veranderen.
  • Wijs gewichten toe aan verschillende bestemmingen: Zoals hierboven vermeld, gaan we ervan uit dat alle bestemmingen in waarde gelijk zijn, maar dat is meestal niet het geval. Probeer uw eigen gewichten toe te voegen aan elke bestemming, misschien door rekening te houden met het aantal jaarlijkse bezoekers dat in de tabel wordt vermeld, of door uw eigen conversie / verkoop / winstgevendheidgegevens te gebruiken.
  • Probeer andere trefwoorden en combinaties: Reizen is een van de meest gecompliceerde industrieën als het gaat om het genereren en onderzoeken van zoekwoorden. Er zijn zoveel manieren om verlangen te uiten bij het reizen naar een plaats (bijvoorbeeld New York, New York City, NY, NYC, JFK, ze betekenen allemaal hetzelfde als het gaat om reizen). Merk op dat we geen “van” stad hebben opgegeven, wat een enorm verschil maakt. Probeer ‘reizen’, ‘vakanties’ en / of prijsgerelateerde zoekwoorden.
  • Probeer hetzelfde voor YouTube SERP’s:  advertools  heeft een vergelijkbare functie voor het extraheren van vergelijkbare gegevens voor video’s. YouTube-gegevens zijn veel rijker omdat ze gegevens bevatten over videoweergaven, beoordelingen, aantal reacties, metagegevens over het kanaal en nog veel meer.
  • Bouw op deze notebook: in plaats van het wiel opnieuw uit te vinden, kunt u een kopie van de code en gegevens krijgen , of u kunt de interactieve versie online verkennen (u moet uw eigen Google CSE-sleutels hebben) en een andere analyse uitvoeren, of verschillende visualisaties produceren. Ik zou graag andere ideeën of benaderingen zien.

0 Comments

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Meme
Upload your own images to make custom memes
Video
Youtube, Vimeo or Vine Embeds
Audio
Soundcloud or Mixcloud Embeds
Image
Photo or GIF
Gif
GIF format