[Python-mx] Scrapear una página con Python requests + beautifoulSoup4 + Mysql

Héctor de la Rosa Mondragón hrosa at cesvimexico.com.mx
Wed Nov 9 19:00:09 EST 2016


Buenas Tardes 

 Estoy comenzando con python anteriormente he programado con PHP y he hecho
algunos scripts para scrapear algunas páginas y me gustaría me ayudaran a
codificar esto lo más rápido posible si es que se pudiese ya que el script
que tengo en PHP no me permite ejecutarlo

 

<?php

error_reporting(0);

set_time_limit(0);

ini_set('max_execution_time', 0);

ini_set('upload_max_filesize', '60M');     

ini_set('memory_limit', '128M');

ini_set('post_max_size', '60M');

 

 

 

include_once("rhtml.php");

include_once("funciones.php");

 

//////////////////////////////////////

 

conect();

 

echo 'Al principio:'.round(memory_get_usage()/1000),' KB<br>';

 

//   $sql="SELECT 

//           rbt_truckpaper_s_modelos.id_categoria,

//           rbt_truckpaper_s_modelos.id_marca,

//           rbt_truckpaper_s_modelos.id_modelo,

//           rbt_truckpaper_s_marcas.marca,

//           rbt_truckpaper_s_modelos.url_modelo,

//           rbt_truckpaper_s_modelos.modelo,

//           rbt_truckpaper_s_categorias.categoria

//         FROM

//           rbt_truckpaper_s_modelos

//           INNER JOIN rbt_truckpaper_s_marcas ON
(rbt_truckpaper_s_modelos.id_categoria =
rbt_truckpaper_s_marcas.id_categoria)

//           AND (rbt_truckpaper_s_modelos.id_marca =
rbt_truckpaper_s_marcas.id_marca)

//           INNER JOIN rbt_truckpaper_s_categorias ON
(rbt_truckpaper_s_marcas.id_categoria =
rbt_truckpaper_s_categorias.id_categoria)

//         WHERE rbt_truckpaper_s_marcas.id_categoria =
'$_GET[id_categoria]' AND

//               rbt_truckpaper_s_marcas.id_marca = '$_GET[id_marca]' AND  

//               rbt_truckpaper_s_modelos.id_modelo = '$_GET[id_modelo]'"; 

 

       

//   $res=mysql_query($sql) or die(mysql_error());          

//   $row=mysql_fetch_assoc($res);

//   $categoria=$row['categoria'];

//   $marca=$row['marca'];

//   $modelo=$row['modelo'];

//   $url_modelo=$row['url_modelo'];

  

  

// $url = strtolower("$url_modelo/");

////////////////////////////////////////////////////////////////

       

$url='http://www.truckpaper.com/listings/trucks/for-sale/list/category/27/tr
ucks/manufacturer/freightliner/model-group/business-class-m2-106';

 

 

////////////////////////////////////////////////////////////////

 

 

$fcategoria=$row['categoria'];

$fmarca=$row['marca'];

$fmodelo=$row['modelo'];

 

 

$reg=0;

$regv=0;

 

 

if (url_exists($url)){

 

    $url_base=$url;

    $pag=1;

    

    //conecta_proxy($url_base.'?page='.$pag);

 

    $html = file_get_html($url_base.'?page='.$pag);

    echo
"Paginas:".$paginas=(int)strval(trim(substr($html->find('div[class=paginatio
n] span', 0)->innertext,3,3)));

    $html->clear(); 

    unset($html);

    echo "<br/>";

      

    for($pag=1; $pag<=$paginas; $pag++){

          

      //conecta_proxy($url_base.'?page='.$pag);

        echo "Pagina :"."<a href=".$url_base.'?page='.$pag.">$pag de
$paginas</a><hr>";

         

        foreach($html->find('div[class=border-bottom p-top-20 p-bottom-10 cf
listing]') as $vtracto) {

            

            //echo $tprecio = trim($vtracto->find('span.bold',
0)->plaintext);

              

            //echo "Pthimg:".$pathimagen=
trim($vtracto->find('img.laziload', 0)->src);

            //echo "<img width=\"42\" height=\"54\" src=\"$pathimagen\" />";

            //echo "<img width=\"90\" style=\" margin:10px\"
src=\"[$pathimagen]\" >";

            $reg=$reg+1;

            echo "<br />"; 

            date_default_timezone_set('UTC');

            date_default_timezone_set("America/Mexico_City");

            echo 'Registro :'.$reg;

            echo "<br />";  

            echo 'Fecha: '.$datee= date("Y-m-d H:i:s");

            echo "<br />";    

 

            $cadena = trim($vtracto->find('.listing-name a', 0)->plaintext);

            $array = explode(" ", $cadena);

 

            echo 'Marca: '.$marca  =$array[1];

            echo "<br />";

            echo 'Modelo: '.$modelo = $array[2]." ".$array[3]." ".$array[4];

            echo "<br />";

            echo 'Version: '.$version= $array[2]." ".$array[3]."
".$array[4]." ".$array[5]." ".$array[6];

            echo "<br />";

            echo 'Año:'.$ano =$array[0];

            echo "<br />";

            unset($cadena);

            unset($array);  

              

            // Segmento de Detalle Equipamiento de Tracto extraigo VIN si se
encuentra aqui? //

            echo 'Equipamiento : '."<br />".$DetEquipa =
str_replace("'","",trim($vtracto->find('div[class=col equip-details cf]',
0)->plaintext));

            echo "<br />";

            $patronvin='/[A-Za-z0-9]{17}/';

             if (preg_match($patronvin,trim($vtracto->find('div[class=col
equip-details cf]', 0)->plaintext), $vin)){

               echo 'VIN : '.strtoupper($vin[0]);

               echo "<br />";

             }else{

               echo "VIN :".$vin[0]="No hay VIN...";

               echo "<br />"; 

             }

 

            ////////////////////////////////////////////////////////////////

            $patrontprecio='/For Sale Price:/i';

            if (preg_match($patrontprecio,trim($vtracto->find('span.bold',
0)->plaintext), $tprecio)){

               echo 'Tipo de Precio : '.$tprecio[0]="A la venta";

               echo "<br />";  

             }else{

               echo 'Tipo de Precio : '.$tprecio[0]="Subasta";

               echo "<br />"; 

             } 

             

               //echo $tprecio = trim($vtracto->find('span.bold',
0)->plaintext);

            echo 'Precio : '.$precio =
strval(str_replace(",","",str_replace(" ","",str_replace("USD
$","",trim($vtracto->find('span.nobr', 0)->plaintext)))));

            $ubica="";

            echo "<br />";

            $patrontmoneda='/USD/';  

            if (preg_match($patrontmoneda,trim($vtracto->find('span.nobr',
0)->plaintext), $moneda)){

               echo 'Moneda : '.$moneda[0];

               echo "<br />";    

            }else{

               echo 'Moneda : '.$moneda[0]="";

               echo "<br />"; 

            }

            //echo memory_get_usage() . "\n";

            

            echo "<br /><br />"; 

            if ($tprecio[0]=='A la venta'){

            $upsql=utf8_decode("INSERT INTO rbt_truckpaper_scrap_modelos(

                  url,

                  fecha_scrap,

                  marca,

                  modelo,

                  version,

                  ano,

                  vin,

                  caracteristicas,

                  drive_side,

                  engine_manufacturer,

                  engine_type,

                  fuel_type,

                  horsepower,

                  mileage,

                  number_of_rear_axles,

                  suspension,

                  transmission,

                  precio,   

                  moneda,

                  imagen

                ) 

                VALUE (

                  '$url',

                  '$datee',

                  '$marca',

                  '$modelo',

                  '$version',

                  '$ano',

                  '$vin[0]',

                  '$DetEquipa',

                  '$ubica',

                  '$ubica',

                  '$ubica',

                  '$ubica',

                  '$ubica',

                  '$ubica',

                  '$ubica',

                  '$ubica',

                  '$ubica',   

                  '$precio',

                  '$moneda[0]',

                  '$pathimagen'

               )"); 

                $result = mysql_query($upsql) OR die("Error:
".$upsql.mysql_error());

                $regv=$regv+1;

              }

            

          }

        unset($DetEquipa);

        unset($vtracto);

        echo 'Antes:'.round(memory_get_usage()/1000),' KB<br>';

        $root->clear();

        unset($root);

        $html->clear(); 

        unset($html);

        echo 'Despues:'.round(memory_get_usage()/1000),' KB<br>';

      }

    echo "<center>Extracto exitoso de ". $url ."</center><br /><br />";  

    echo "<center><h3>".$regv." Registros en venta agregados a la Base de
".$fcategoria." ".$fmarca." ".$fmodelo." </h3></center><br />";

  

 }

 

?>

 

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-mx/attachments/20161109/1dd6ffc0/attachment-0001.html>


More information about the Python-mx mailing list