Como me tornei um "milionário" de leads

Fev-05-20245 minutos de leitura

~ Uma história de webscraping por Arya - Um utilizador de ProxyScrape

Para que fique claro, sou obrigado a declarar que não sou um representante oficial de ProxyScrape. No entanto, sou um grande fã e cliente dos seus serviços. Se ainda não está a utilizar os seus serviços, recomendo vivamente que o faça! As opiniões e pensamentos que se seguem são inteiramente meus.

"Oh $!*^, não há hipótese"

Foi exatamente este o sentimento que dei por mim a murmurar às 3 da manhã, ao aperceber-me de que uma empresa outrora tão na moda como as entregas de leite, algo que a maior parte das pessoas remeteria para a era da música disco e daqueles fatos de néon selvagens, ainda anda por aí como um mau corte de cabelo dos anos 80 - e, infelizmente, está em todo o lado.

Esta empresa foi o verdadeiro negócio no seu auge. Quero dizer, não se podia escapar-lhe durante o seu apogeu. Agora, o seu nome só é murmurado com um toque de nostalgia nos lares de idosos.

"Páginas Amarelas".

You might be wondering, “Why does this matter? Why should anyone give a damn? Why is this not a 30s TikTok with a dude playing GTA 5 on the other half of it?” Well, one of the hottest uses for web scraping is lead discovery and generation. In our capitalist wonderland where everyone’s peddling some crazy sh*t, it just makes sense to scour the internet for the suckers who’ll “HODL” and “FOMO” into your crypto timeshare that’s shaped like “half a rhombus”. And hey, just to be clear, “it’s NOT a pyramid scheme… it’s just shaped like those famous pointy things in Egypt.”

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:

"muro da vergonha": As relíquias que ainda não se adaptaram à era da Internet ainda lá estão. O negócio do seu avô deve estar lá, tal como aquela SMMA que começou por causa do TikToks e que abandonou em três meses, mas que agora está imortalizada nos directórios de empresas do Google.

"Não sou como as outras raparigas": Apesar de os scrapers novatos acreditarem que o Google Maps é o Santo Graal para os contactos de pequenas empresas, qualquer scraper experiente sabe que isso é uma grande treta - está saturado, todas as raparigas de 14 anos inspiradas por um certo homem careca já assediaram essas empresas.

"como tirar um doce a um bebé": Os sítios YellowPages e os seus derivados não têm qualquer proteção. Eu poderia recolher todas as empresas do seu diretório em segundos. Estamos a falar de dezenas de milhões de contactos.

É certo que pode não ser a palavra de ordem nos círculos de marketing, mas é aí que reside a oportunidade. Enquanto outros perseguem as últimas tendências, os mais experientes reconhecem o potencial nos cantos esquecidos da Internet. As Páginas Amarelas podem ser uma relíquia do passado, mas no mundo da geração de contactos, é uma relíquia com potencial inexplorado e um roteiro para o sucesso.

Agora, pode estar a perguntar-se: "Como é que eu aproveitaria uma oportunidade destas?" - Vamos percorrer todos os passos juntos e, com sorte, até mesmo alguns de vocês, Neandertais, serão capazes de raspar as Páginas Amarelas no final disto.

Vamos abordar esta questão como faríamos com qualquer outro sítio Web. O primeiro passo é descobrir como é que o site funciona. Normalmente, isto requer que tu, sim, tu, descubras como navegar até ao local onde se encontram os dados sumarentos. Não $!*^... como é que esperas extrair os dados se não os consegues encontrar pooky?!?

Shown Above: YellowPages Canada’s landing page, the unfortunate victim of this post.

Como pode ver acima, na página de destino, existem duas entradas de texto - uma para o seu termo de pesquisa e outra para a localização. Vamos preenchê-las e fazer uma pesquisa; vou procurar "Dentists" (Dentistas) em "Toronto, Ontario".

Shown Above: YellowPages Canada’s listing results page.

Assim que descobrir o seu ABC e o preencher e conseguir localizar o botão de pesquisa E clicar nele (estou impressionado), deve ser redireccionado para uma página como a que está acima, que tem um caminho como o seguinte:

/search/si/1/Dentistas/Toronto+ON

Podemos deduzir a seguinte estrutura de trajetória (isto será útil mais tarde):


/search/si/[Número de página]/[Termo de pesquisa]/[Localidade]+[Código da região]

Outro aspeto a ter em conta é que já localizámos os dados que pretendemos, as listas de empresas - vamos descobrir de onde estão a ser carregadas essas listas de empresas, que devem ser enviadas dentro do documento OU obtidas a partir de um ponto de extremidade da API (ou, se fores teimoso, e acredita que já vi isso - websockets).

Mostrado acima: As solicitações fetch/XHR originadas da página. (Spoiler: os dados não estão em nenhum deles).

Mostrado acima: As listas de empresas dentro do documento. (OMGEEE Os dados estavam de facto dentro do documento).

As we sifted through the API requests, looking for the data, it was proven futile. We then turned our attention to the HTML. Now, here’s a little nugget of insight for you – after “navigating the digital landscape for over a decade”, I knew instinctively that the data was within the document, thanks to the pages’ snappy responsiveness.

Mas sejamos realistas. Dado o estatuto da YellowPages como uma empresa de listas telefónicas que procura desesperadamente relevância e, mais crucialmente, receitas, é improvável que estejam a exibir pilhas de tecnologia de ponta. As hipóteses de contratarem programadores que ostentam flanelas e têm cinquenta aplicações de tarefas baseadas em React no seu currículo são quase nulas. Então, será que estamos verdadeiramente chocados com o facto de a página web ser estática?

No entanto, as listagens na página estão contidas numa div, extraível com o seletor "div.resultList". Cada listagem individual, convenientemente aninhada no elemento acima mencionado, pode ser extraída com o seletor div[itemtype="http://schema.org/LocalBusiness] 

Vou deixar que descubram como extrair individualmente os dados para além deste nível de granularidade; caso contrário, estaríamos aqui para sempre. Utilize o atributo "itemprop" - deve facilitar-lhe significativamente o processo.

Now, to automate extraction: You should paginate through the results using the URL (recall the path structure we discussed earlier), extracting elements and data from each page until you hit an empty page. I personally opted to use Rust for this project as it’s fast and provides easy parallelization (which will be important in a second), leveraging the “reqwest” and “select” crates to handle the heavy lifting. And here’s a few pro tips: remember to rotate your user agent, set your referrer correctly, use a proxy, and PLEASE don’t DDOS them.

Mostrado acima: Página de resultados vazia do 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.

Mostrado acima: Contagem de páginas do YellowPages na parte inferior da página de resultados.

No entanto, há uma ressalva a essa estratégia de paralelização: Embora o YellowPages possa sugerir a existência de mais de 60 páginas de resultados, a tentativa de aceder a qualquer página para além de 60 nos resultados não será apresentada. Portanto, defina um limite rígido para sua paralelização em 60. Partindo do princípio de que a largura de banda e a capacidade de computação são adequadas, cada página de resultados deve ser extraída no mesmo tempo que demoraria a extrair uma página no modelo sequencial.

Mostrado acima: Exemplo de dados de listagem extraídos do YellowPages.

Agora, podem estar a perguntar-se: isto é clickbait? O que é que a parte do "milionário" tem a ver com tudo isto? Bem, se acompanhou o processo e agora possui um guião funcional, posso ou não ser capaz de atestar pessoalmente que nada o impede de, teoricamente, iterar por todas as cidades do Canadá e obter todas as listagens de empresas de uma consulta dentro dessa cidade a partir do YellowPages. Estes dados podem literalmente ter um valor em dólares na ordem dos milhões se forem devidamente aumentados, mas também são literalmente milhões de empresas no seu diretório que estão agora ao seu alcance.

As Páginas Amarelas podem evocar memórias de uma era passada, mas o seu potencial para a geração de contactos B2B continua a ser um tesouro escondido na paisagem digital. Ao navegar pelas peculiaridades da sua interface Web estática, a recolha de dados desta plataforma aparentemente desactualizada revela uma vasta gama de oportunidades de negócio. A natureza negligenciada e subutilizada das Páginas Amarelas torna-as uma oportunidade única.

O meu único objetivo é que esta publicação não vos deixe a pensar "o verdadeiro tesouro foram os amigos que fizemos ao longo do caminho". Espero que esta publicação tenha demonstrado as oportunidades únicas que existem, especialmente com o conjunto de competências que muitos de nós tomam como garantidas, e que tenha servido como uma leitura interessante para aqueles que têm experiência nesta área e que tenha dado uma ideia àqueles que não têm.

Como sempre, mantenham-se seguros, usem proteção e, pelo amor de Deus... não façam nada que leve o FBI a perseguir-vos - bem... neste caso, seria a RCMP.

Mostrado acima: O equivalente canadiano do FBI - a RCMP.