[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