Escolha uma Página

Introdução

Fiquei tentado a achar os produtos em ofertas no bestshoptv, o problema é que dá muito trabalho ficar procurando um a um então escrevi um script que me ajudava a fazer isso, ele é na verdade um conjunto de 3 scripts e funcionam +- assim:

  1. Baixa todos os produtos do site deles (em menos de 1 minutos) e salva em um arquivo;
  2. Procura dentro dos produtos baixados aquele que tem um preço específico ou que está com x% de desconto

O Resultado

Resolvi o problema usando 3 scripts,  mas pq 3, simplesmente pq cada linguagem de programação tem seu objetivo então eu fiz cada coisa na linguagem que era mais apropriada, foi usando php, shell script e awk.

  1. Script em php que baixa os produtos
  2. shell script que chama o php n vezes em paralelo
  3. script em awk que localiza os produtos

Vamos aos códigos

O PHP

	set_time_limit(50000);
 
$paginaInicial= $_SERVER['argv'][1];// se tiver dois parametros pega o segundo como limite$limite = ($_SERVER['argv'][2] == "") ? 10: $_SERVER['argv'][1];$paginaFinal = $paginaInicial+$limite;
 
$contents = "";$filename = "paginas/".$paginaInicial.".html";
 
while($paginaInicial < $paginaFinal){    $handle = fopen("http://www.bestshoptv.com/index?page=search/search_result&spage=".$paginaInicial."&by=1", "r");    $contents .= stream_get_contents($handle);    $paginaInicial++;}
 
    $fp = fopen($filename,"w+");    fwrite($fp, $contents);    fclose($fp);

O Shell Script

#!/bin/bashphp a.php 1   &php a.php 11  &php a.php 21  &php a.php 31  &php a.php 41  &php a.php 51  &php a.php 61  &php a.php 71  &php a.php 81  &php a.php 91  &php a.php 101 &php a.php 110 &php a.php 121 &php a.php 131 &php a.php 141 &php a.php 151 &php a.php 161 &php a.php 171 &php a.php 181 &php a.php 191 &php a.php 201 &php a.php 210 &php a.php 221 &php a.php 231 &php a.php 241 &php a.php 251 &php a.php 261 &php a.php 271 &php a.php 281 &php a.php 291 &php a.php 301 &php a.php 311 &php a.php 321 &php a.php 331 &php a.php 341 &php a.php 351 &php a.php 361 &php a.php 371 &php a.php 381 &

O AWK + Recursos do Shell

Para buscar um produto com um valor específico

find . -print0 | xargs -0 egrep -ni "Por: " | awk -F " " '$3 {print $1" "$3" "$7}' | sed  's/\,/\./g' | awk -F "<" '{print $1" "$2}' | awk -F " br " '{print $1" "$2}' | awk -F " " '$3==329.90 {print $1"-"$3}'

Para achar produto com um desconto de 90%

find . -print0 | xargs -0 egrep -ni "Por: " | awk -F " " '$3 {print $1" "$3" "$7}' | sed  's/\,/\./g' | awk -F "<" '{print $1" "$2}' | awk -F " br " '{print $1" "$2}' | awk -F " " '$3==($2*0.1) {print $1 $3}'

Depois de rodar este ultimo script o resultado é o seguinte:

./281.html:2701:De:-329.90
./351.html:16186:De:-329.90
./241.html:12949:De:-329.90
./371.html:1528:De:-329.90
./121.html:9694:De:-329.90
./191.html:7829:De:-329.90
./61.html:10918:De:-329.90
./331.html:4630:De:-329.90

Ou seja dentro arquivo 331.html na linha 4630 está o codigo do produto ai é só entrar no site

http://www.bestshoptv.com/product/codigo_do_produto

Conclusão

A pergunta que não quer calar! E então Anselmo você comprou alguma coisa com desconto???? Não pq eu queria comprar a TV e no dia que eles anunciaram o servidor nao aquenteou e no segundo dia os caras do bestshop bloquearam a busca e era justamente por ali que eu capturava os produtos, mas se você quiser alterar o codigo e pegar os produtos pelas buscas secundarias ta ai um bom começo. Mas apesar desse probleminha me diverti muito escrevendo estes scripts. Quero aqui agradecer aos meu colega de trabalho @vonmecheln por algumas idéias e colaboração com ótimas piadas!