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

Adan Garcia adangq at gmail.com
Thu Nov 10 11:51:51 EST 2016


¿Lo más rápido posible?
¿De cuanto es la remuneración?
¿Tambien quieres que reemplce mi nombre por el tuyo o eso tu lo haces?

Esta es una lista para aclarar dudas especificas, no para hacer tu trabajo.
Te invito a que reformules tu correo con las dudas especificas.

Te recomiendo revises el proyecto https://scrapy.org/ te puede ser de
utilidad.

Saludos.



*--*

*AdanGQ <http://about.me/adangq>*tw: @pixelead0
<http://www.twitter.com/pixelead0>


2016-11-09 18:00 GMT-06:00 Héctor de la Rosa Mondragón <
hrosa at cesvimexico.com.mx>:

> 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/trucks/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=pagination]
> 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 />";
>
>
>
>  }
>
>
>
> ?>
>
>
>
>
>
>
>
> _______________________________________________
> Python-mx mailing list
> Python-mx at python.org
> https://mail.python.org/mailman/listinfo/python-mx
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-mx/attachments/20161110/40ec473a/attachment-0001.html>


More information about the Python-mx mailing list