Raspando o Avito sem um navegador sem cabeça

Recentemente, Habré publicou um artigo Scraping modern websites without headless browsers , e nos comentários foi sugerido que sem um headless browser não funcionaria obter um número de telefone de um anúncio no Avito ou Yulia. Quero refutar isso, abaixo está um script python com menos de 100 linhas de código que analisa "avito" com sucesso





Não sou um especialista em "análise" de sites e este não é o meu trabalho, mas não é incomum que eu faça isso para resolver meu trabalho, e não apenas tarefas. Por exemplo, você precisa obter o saldo de uma conta pessoal em algum serviço (operadoras móveis) que não possui uma API para isso, ou, o que é muito triste, uma lista de domínios do registrador (outro), que também não possui uma API.





Como no artigo, alguns comentários que me levaram a escrever este post, também uso Python e a biblioteca de solicitações. Se você não conseguir encontrar uma API "interna", terá que incluir a biblioteca BeautifulSoup. Mas aqui tudo acabou sendo muito mais simples.





Se você abrir a versão "completa" do site https://avito.ru e tentar copiar o número de telefone, fica claro que o número de telefone do site não está escrito, mas desenhado. Já na versão mobile do site, o número é fornecido em texto. Você pode verificar isso observando as respostas ao clicar no botão "Ligar" nas ferramentas do desenvolvedor no navegador.





Não vou analisar meu script em detalhes, há comentários suficientes no código para entender o que está acontecendo e em que estágio. Em suma, é utilizada a versão mobile do site, são declaradas variáveis ​​de busca no site, bem como duas variáveis ​​"chave" e "cookie", sobre elas mais detalhadamente, a seguir é iniciado o processo de obtenção de cookies abrindo a página principal, então é iniciado um ciclo que coleta id de todos os anúncios passando por todas as páginas. Depois de receber todos os anúncios do segundo ciclo, analise-os e obtenha as informações de nosso interesse.





Captura de tela do script:





, .. API. - API. , , . . - . - 100 .





"key" "cookie", key , , - . cookie , "", , IP , "" .





Se for interessante, contarei mais sobre como estava procurando uma API ou posso escrever um exemplo semelhante para o "whirligig".





O próprio script








All Articles