donker proxyscrape logo

Hoe ik een Lead "miljonair" werd

01 feb-20245 min gelezen

~ Een webscraping verhaal door Arya - Een ProxyScrape gebruiker

Voor alle duidelijkheid, ik ben verplicht om een disclaimer te maken dat ik geen officiële vertegenwoordiger ben van ProxyScrape. Ik ben echter een grote fan en klant van hun diensten. Als je nog geen gebruik maakt van hun diensten, raad ik je dat zeker aan! De volgende meningen en gedachten zijn geheel van mijzelf.


"Oh $!*^, dat kan niet"

Dat is precies wat ik om 3 uur 's nachts mompelde, worstelend met het besef dat een bedrijf dat ooit zo trendy was als melkleveringen, iets wat de meeste mensen zouden verwijzen naar het tijdperk van de discomuziek en die wilde neonoutfits, nog steeds rondwaart als een slecht kapsel uit de jaren 80 - en helaas is het overal.

Dit bedrijf was het echte werk in zijn hoogtijdagen. Ik bedoel, je kon er niet omheen tijdens de hoogtijdagen. Nu wordt de naam alleen nog gemompeld met een vleugje nostalgie in bejaardentehuizen.

"YellowPages."
Je vraagt je misschien af: "Waarom is dit belangrijk? Waarom zou iemand hier iets om geven? Waarom is dit geen jaren '30 TikTok met een kerel die GTA 5 speelt op de andere helft?" Nou, een van de populairste toepassingen van web scraping is het vinden en genereren van leads. In ons kapitalistische wonderland waar iedereen gekke dingen verkoopt, is het gewoon logisch om het internet af te struinen op zoek naar de sukkels die zullen "HODL'en" en "FOMO'en" in jouw crypto timeshare die de vorm heeft van "een halve ruit". En hé, voor de duidelijkheid, "het is GEEN piramidespel... het heeft gewoon de vorm van die beroemde puntige dingen in Egypte."
So, here’s the kicker. One of the absolute gems for B2B lead generation, in my humble opinion, is none other than YellowPages (or Yell for you “chewsday” people). Why? Well, let me break it down:
  1. "muur van schaamte": De relikwieën die het internettijdperk nog niet helemaal hebben ingehaald, hangen daar nog steeds rond. Het bedrijf van je opa staat daar waarschijnlijk te chillen, net als die SMMA die je bent begonnen vanwege TikToks en die je binnen drie maanden hebt afgezworen, maar die nu is vereeuwigd in de bedrijvengidsen van Google.
  1. "Ik ben niet zoals andere meisjes": Terwijl de frisse scrapers denken dat Google Maps de heilige graal is voor leads van kleine bedrijven, weet elke slimme scraper dat dat onzin is - het is verzadigd, elke 14-jarige die geïnspireerd is door een bepaalde kale man heeft die bedrijven lastiggevallen.
  1. "als snoep afpakken van een baby": YellowPages' en hun afgeleide websites hebben geen enkele bescherming. Ik zou elk bedrijf in hun directory binnen enkele seconden kunnen schrapen. We hebben het hier over tientallen miljoenen leads.

Natuurlijk, het is misschien niet het modewoord in marketingkringen, maar daarin schuilt de kans. Terwijl anderen de nieuwste trends najagen, zien de slimmeriken het potentieel in de vergeten hoeken van het internet. YellowPages is misschien een relikwie uit het verleden, maar in de wereld van leadgeneratie is het een relikwie met onaangeboord potentieel en een routekaart naar succes.

Nu vraag je je misschien af: "Hoe kan ik zo'n kans benutten?" - Laten we samen alle stappen doorlopen en hopelijk kunnen zelfs sommige Neanderthalers aan het eind van dit verhaal YellowPages afschrapen.

We benaderen dit zoals we dat bij elke andere website zouden doen. De eerste stap is uitzoeken hoe de website werkt. Hiervoor moet je meestal uitzoeken hoe je naar de sappige gegevens kunt navigeren. Nee $!*^... hoe verwacht je de gegevens eruit te halen als je ze niet kunt vinden pooky?!?

Hierboven afgebeeld: De landingspagina van YellowPages CanadaHet onfortuinlijke slachtoffer van deze post.

Zoals je hierboven op hun landingspagina kunt zien, zijn er twee tekstinvoeren - een voor je zoekterm en de andere voor de locatie. Laten we deze invullen en een zoekopdracht uitvoeren; ik zoek naar "Tandartsen" in "Toronto, Ontario".

Zodra je je ABC's hebt uitgezocht en deze hebt ingevuld en de zoekknop hebt gevonden EN erop hebt geklikt (ik ben onder de indruk), zou je moeten worden doorgestuurd naar een pagina zoals hierboven met een pad zoals het volgende:

/zoeken/si/1/tandartsen/Toronto+ON

We kunnen de volgende padstructuur afleiden (dit komt later van pas):


/zoeken/si/[Paginanummer]/[Zoekterm]/[Plaats]+[Regiocode]

Nog iets om op te merken, we hebben de gegevens die we willen al gevonden, de bedrijfsvermeldingen - laten we nu uitzoeken waar deze bedrijfsvermeldingen vandaan worden geladen, het moet worden verzonden binnen het document OF worden opgehaald van een API-eindpunt (of als je eigenwijs bent, en geloof me ik heb het gezien - websockets).

Hierboven afgebeeld: De fetch/XHR-verzoeken die afkomstig zijn van de pagina. (Spoiler: de gegevens staan in geen enkel verzoek).
Hierboven afgebeeld: De bedrijfsvermeldingen in het document. (OMGEEE De gegevens zaten daadwerkelijk in het document).
Toen we de API-verzoeken doorzochten, op zoek naar de gegevens, bleek dat zinloos. We richtten onze aandacht toen op de HTML. Hier is een klein stukje inzicht voor je - nameer dan tien jaar"navigeren in het digitale landschap" wist ik instinctief dat de gegevens zich in het document bevonden, dankzij de snelle reactiesnelheid van de pagina's.

Maar laten we wel wezen. Gezien de status van YellowPages als een telefoonboekbedrijf dat wanhopig op zoek is naar relevantie en, belangrijker nog, inkomsten, is het onwaarschijnlijk dat ze pronken met geavanceerde technische snufjes. De kans dat ze ontwikkelaars aannemen die met flanellen lopen te pronken en vijftig React-gebaseerde to-do apps op hun cv hebben staan, is klein tot onbestaande. Dus zijn we echt geschokt dat de webpagina statisch is?

Desondanks staan de aanbiedingen op de pagina in een div, die kan worden geëxtraheerd met de selector "div.resultList". Elke individuele lijst, handig genest in het bovengenoemde element, kan worden geëxtraheerd met de selector div[itemtype="http://schema.org/LocalBusiness] 

Ik laat het aan jou over om uit te zoeken hoe je individueel de gegevens kunt extraheren voorbij dit niveau van granulariteit; anders zouden we hier voor altijd zijn. Gebruik het "itemprop" attribuut - het zou het proces aanzienlijk moeten vereenvoudigen.

Nu de extractie automatiseren: Je moet pagineren door de resultaten met behulp van de URL (denk aan de padstructuur die we eerder hebben besproken), waarbij je elementen en gegevens uit elke pagina haalt totdat je een lege pagina tegenkomt. Persoonlijk heb ik ervoor gekozen om Rust te gebruiken voor dit project, omdat het snel is en eenvoudige parallellisatie biedt (wat in een seconde belangrijk zal zijn), door gebruik te maken van de "reqwest" en "select" kratten om het zware werk af te handelen. En hier zijn een paar pro tips: vergeet niet om je user agent te draaien, je referrer correct in te stellen, gebruik een proxy, en DDOS ze alsjeblieft niet.
Hierboven afgebeeld: De lege resultatenpagina van YellowPages.
Your script should be good to go now. But how can we elevate this even further? Let’s put our singular combined brain cell to work and ponder… “Do we need to sequentially request each page?” Absolutely not. YellowPages makes it remarkably easy for us to parallelize this process by providing the number of pages available for the query – hint, hint, wink, wink.
Hierboven afgebeeld: Het aantal pagina's van YellowPages onderaan de pagina met resultaten.

Er is echter een nadeel aan deze parallellisatiestrategie: Hoewel YellowPages suggereert dat er meer dan 60 pagina's met resultaten zijn, zal een poging om een pagina van meer dan 60 te openen niet worden weergegeven. Stel daarom een harde bovengrens van 60 in voor je parallellisatie. Ervan uitgaande dat er voldoende bandbreedte en rekenkracht is, zou elke resultaatpagina moeten worden gescraped in dezelfde tijd die het zou kosten om één pagina te scrapen binnen het sequentiële model.

Hierboven afgebeeld: Voorbeeld van geëxtraheerde advertentiegegevens van YellowPages.

Nu vraag je je misschien af: was dit clickbait? Wat heeft het "miljonair" gedeelte met dit alles te maken? Nou, als je het hebt gevolgd en nu een functioneel script hebt, kan ik persoonlijk bevestigen dat niets je tegenhoudt om theoretisch elke stad in Canada te doorlopen en elke bedrijfsvermelding van een zoekopdracht in die stad op te halen bij YellowPages. Deze gegevens kunnen letterlijk een miljoenen dollar waard zijn als ze op de juiste manier worden aangevuld, maar het zijn ook letterlijk miljoenen bedrijven in hun directory die nu binnen jouw bereik liggen.

YellowPages mag dan herinneringen oproepen aan een vervlogen tijdperk, het potentieel ervan voor het genereren van B2B leads blijft een verborgen schat in het digitale landschap. Door door de eigenaardigheden van de statische webinterface te navigeren, onthult het schrapen van gegevens van dit schijnbaar verouderde platform een enorm scala aan zakelijke leads. De over het hoofd geziene en onderbenutte aard van YellowPages maakt het tot een unieke kans.

Mijn enige doel is dat deze blogpost je niet achterlaat met de gedachte "de echte schat waren de vrienden die we onderweg hebben gemaakt" - ik hoop dat dit zowel de unieke mogelijkheden laat zien die er zijn, vooral met de vaardigheden die zo velen van ons als vanzelfsprekend beschouwen, en hopelijk ook interessant om te lezen voor degenen onder jullie die ervaring hebben op dit gebied, en inzicht geeft aan degenen onder jullie die dat niet hebben.

Zoals altijd, blijf veilig, gebruik bescherming, en voor de liefde van god... doe niet iets waar de FBI achter je aan zit - nou... in dit geval zou het de RCMP zijn.

Hierboven afgebeeld: Het Canadese FBI-equivalent - de RCMP.