27/05/11

Como criar um espião da Web com um rastreador PHP

Crawler, spider, bot,ou tudo o que você quiser chamá-lo, é um programa que automaticamente recebe e processa dados de sites, para muitos usos.
Google, por exemplo, índices e fileiras páginas automaticamente via poderosos spiders, crawlers e bots. Temos também Damas de link, validadores HTML, otimizações automatizadas e espiões da web. Yeah, web espiões. Isso é o que vamos fazer agora.

Na verdade eu não sei se isso é um termo comum, ou se sua nunca foi usado antes, mas eu acho que ele descreve perfeitamente este tipo de aplicação. O principal objetivo aqui é criar um software que monitora os preços de seus concorrentes que você sempre pode ser atualizado com mudanças do mercado.

Você pode pensar "bem, que é inútil para mim. Você sabe, eu sou um freelancer, eu não tenho que lidar com essa coisa de 'comparação de preços' ". Não se preocupe, você está certo. Mas você pode ter clientes que tem um monte de concorrentes que querem assistir de perto. Portanto, você sempre pode oferecer isso como um serviço "plus" (sinta-se livre para cobrar por ele, eu ficarei feliz em saber que) e aprender um pouco sobre esse processo.
So, Let's rock!























    1 – Requisitos

Servidor PHP com linux-temos de usar crontab aqui, por isso é melhor obter um bom servidor on-line
MYSQL – nós irá armazenar dados com ele, portanto, será necessário um banco de dados

2 – Basic rastreamento

Vamos começar por tentar uma função de rastreamento básica: obter alguns dados. Vamos dizer que eu vender sapatos, e Zappos é meu concorrente (apenas sonhando com ele). O primeiro produto que deseja monitorar é um belo par de Nike Free Run+. Nós usaremos agora fopen para abrir a página, fgets para ler cada linha da página e feof para verificar quando temos de concluir a leitura. Neste momento, você precisará ter fopen habilitado em seu servidor (você pode verificá-la via phpinfo). Nosso primeiro pedaço de código será:

Neste momento, se você repetir o conteúdo de $ você irá notar que ele tem todo o conteúdo de página sem CSS ou JS, porque no site zappos são todos com caminhos relativos.

Agora temos o conteúdo, é preciso processar o preço do produto.

Como você sabe a diferença entre preço e outros dados comuns em nossa página? Bem, é fácil notar que todos os preços devem ter um "$" antes deles, então o que vamos fazer é obter todos os dados e executar uma expressão Regular para ver que os preços onde temos um sinal de cifrão, temos nessa página.

Mas nossa expressão regular corresponderá a cada preço na página. Desde Zappos é um bom amigo de espiões, ele tem feito o preço "oficial" como o primeiro, sempre. Os outros são usados apenas em JavaScript, assim que nós pode ignorá-los.

Nossa saída REGEX e preço será algo como isto:

Uau, temos agora o preço. Não se esqueça que os outros preços, teremos-los se Zappos altera algo no seu site.
3 – Salvar dados no MYSQL

Vamos preparar nosso DB para receber esses dados. Vamos criar uma tabela chamada zappos. Dentro do mesmo teremos quatro colunas:

ID - chave primária nesta tabela
Data - quando os dados foram armazenados. É bom armazenar isso para que você possa fazer alguns relatórios.
Valor - valor que você encontrou
Other_Values - valores que não são o que você quer, mas é importante armazená-los para se o proprietário do site for alterado o código que tenha um "backup" dos possíveis valores

No meu phpmyadmin eu criei um banco de dados chamado espião e dentro dela minha tabela zappos, desta forma:

Depois de criar sua tabela, vamos começar adicionando alguns dados. Portanto, temos de fazer um mysql conectar no nosso PHP e preparar os nossos preços para ser salvo.

Uma vez que todos os nossos dados são perfeito não flutua, precisamos para prepará-lo, então teremos apenas números e um ponto.
Para conectar-se no nosso db usaremos mysql_connect e depois usaremos mysql_select_db para selecionar "espião" e, em seguida, pode fazer nosso mysql_query para guardar ou obter nossos dados.

4 – Espião mais inteligente com Crontab

Bem, com crontab nós pode agendar algumas tarefas em nosso sistema (linux) para que ele seja executado automaticamente. Ele é útil para rotinas de backup, rotinas de otimização de site e muito mais coisas que você não deseja fazer manualmente.

Desde nosso rastreador precisa alguns dados atualizados, vamos criar um cron job que funciona todos os dias em am 1. Na net.tuts+ temos um bom tutorial sobre como agendar tarefas com cron, então se você não está muito familiarizado com ele, sinta-se livre para check-out.

Em suma, temos as linhas de comando que nós poderíamos usar para ele, (segundo lugar é o meu favorito):



5 – Vamos fazer alguns gráficos bonitos

Se você estiver planejando usar esses dados, apenas um registro de db não vai ser muito útil. Assim depois de todo esse trabalho que nós precisamos para apresentá-lo de uma maneira mais sexy.

Quase todos os nossos trabalhos aqui serão feitos pelo gvChart jQuery plugin. Obtém todos os nossos dados de tabelas e fazer alguns gráficos cool dele. Na verdade o que temos a fazer é imprimir nossos resultados como uma tabela, então ele pode ser usado por gvChart. Nosso código desta vez vai ser (download nossa demo para obter mais informações!):


Você está com fome ainda?
Eu acho que há muita coisa para melhorar ainda. Você poderia, por exemplo, fazer uma "lista de espera" de urls, assim que você poderia rastrear um monte de URL com uma única chamada (obviamente cada URL poderia ter sua própria REGEX e "preço oficial", se eles são de sites diferentes).

E o que você acha que poderíamos melhorar?

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.