Scraping web a uma página .aspx com simple html dom

  • Autor Autor lordraven
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
L

lordraven

Curioso
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Que tal este es mi segundo post con una tema nuevo voy ya varios dias intentando hacerlo y esta complicado la verdad no encuentro manera de extraer esta informacion.
el punto es que trabajo haciendo scraping web estoy ahora utilizando simple html dom por que me resulta muy practico pero recientemente encontre algunos puntos compicados como por ejemplo este que es el mas dificil una pagina con una lista hecha con .aspx donde esta lo complicado.... que la lista no la encuentra el buscador como suele hacerlo con simple html dom.
ahora paro a mostrar lo que explico para un mayor entendimiento:
1.webp

como ven en la pagina hay una lista de inmuebles y la pagina tiene terminacion .aspx ahora cuando entro en inspeccionar la pagina esta ahi la lista pero cuando busco con el simple html dom no la encuentro... ahora bien cuando entro en ver codigo fuente no esta tampoco cuando hago un scraping general de la pagina osea bajar todo la pagina no esta tal informacion alguna sugerencia ayuda porfavor se agradeceria mucho...

para terminar lo q necesito extraer es la informacion de la lista de inmuebles ya que cada cuadro tiene un link q lleva a la vista detallada de cada inmueble una vez entras en la vista detallada ya se puede extraer la informacion ya hice ese trabajo lo que ahora estoy intentando hacer es obtener los links para asi poder hacer un trabajo mas dinamico ahora paso el codigo del scraping por pagina...
PHP:
<?php
   require 'simple_html_dom.php';

   $url = 'http://www.remax.bo/Terreno-En-Venta-Sacaba-Chapare_120020002-232?LFPNNSource=Search&cKey=120020002-232';

   $html = file_get_html($url);
   

   $posts = $html->find('div[class=listing-full mm-page mm-slideout]');


   foreach ($posts as $post) {


   	/**$link = $post->find('div a', 0);
	$a = $link->attr['href'];
	$title = $link->innertext;*/

	$titulo = $post->find('div[class=titlebar-listfull-h1] h1', 0);

	$precio = $post->find('div[class=key-price-div] a', 0);

	$zona = $post->find('div[class=key-data] div', 0);

	$telefono = $post->find('div[class=contact-popup-list] a', 2)->attr['href'];



	$link = $post->find('div img', 6);
	$img1 = $link->attr['src'];

	$link = $post->find('div img', 8);
	$img2 = $link->attr['src'];

	$link = $post->find('div img', 10);
	$img3 = $link->attr['src'];

	$link = $post->find('div img', 12);
	$img4 = $link->attr['src'];

	$link = $post->find('div img', 14);
	$img5 = $link->attr['src'];

	$link = $post->find('div img', 16);
	$img6 = $link->attr['src'];


	$sup_const = $post->find('div[class=attributes-data-row] div', 0);
	$sup = $post->find('div[class=attributes-data-row] div', 0);
	




	$coord = $post->find('div[class=googlemap-office] script', 1);


	preg_match('/var lat = (.*?);/', $coord, $lat_matches);
	preg_match('/var lng = (.*?);/', $coord, $lng_matches);
        
	//echo $lat_matches[1];
	//echo $lng_matches[1]; 
	








	echo "<table border='2'>";
	echo "<tr>";
	echo "<td>",$titulo,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$precio,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$zona,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$sup_const,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$sup,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$telefono,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$lng_matches[1],"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$lat_matches[1],"\n","</td>";
	echo "<tr>";
	echo "<td>",$img1,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$img2,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$img3,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$img4,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$img5,"\n","</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>",$img6,"\n","</td>";
	echo "</tr>";
	echo "</tr>";

	echo "</table>";


   }
?>

este es el codigo para extraer ahora bien tambien en base a este se puede obtener las lista pero no extrae nada como explique arriba no esta la lista..

aca les dejo el link de la pagina para que le den un vistaso:
Bolivia Bienes raices & Todos los tipos de propiedad Para alquiler y venta | RE/MAX Bolivia

aca les dejo el link de la pagina... agradeceria una ayuda algo en lo q no pense o pase por alto gracias...
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Dejame le doy un vistaso y te aviso
 
Hola [MENTION=208040]lordraven[/MENTION] según veo la lista de inmuebles se carga a través de AJAX.

La url a la que se le hace la petición es esta: http://www.remax.bo/handlers/listinglist.ashx?mode=gallery&tt=261&cr=2&mpts=19426&pt=19426&cur=USD&sb=PriceDecreasing&page=1&sc=120&rl=2803&lsgeo=2803,0,0,0&sid=e1083e16-9f2d-4c67-bab4-45bdb9ec1b0a

Esta url devuelve un obejeto JSON que contiene los links de los inmuebles.



PHP:
<?php 
   require 'simple_html_dom.php'; 

    $url = 'http://www.remax.bo/handlers/listinglist.ashx?mode=gallery&tt=261&cr=2&mpts=19426&pt=19426&cur=USD&sb=PriceDecreasing&page=1&sc=120&rl=2803&lsgeo=2803,0,0,0&sid=e1083e16-9f2d-4c67-bab4-45bdb9ec1b0a';


    $opts=array('http'=>array('method'=>"GET",'header'=>"Accept-language: es\r\n"."Referer: http://www.remax.bo/PublicListingList.aspx?SelectedCountryID=120\r\n",'user_agent'=>'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28'));
    $context=stream_context_create($opts);

    $html=file_get_html($url,false,$context);

    $json = json_decode($html, true);

    preg_match_all('/<a onclick=\"InsertGoogleTagManagerEvent.*href =\"(.*)\" class=/', $json['llContentContainerHtml'], $matches);

    foreach ($matches[1] as $value) {
        echo("http://www.remax.bo".$value."<br>");
    } 



?>
 
Super muchas gracias ya lo estoy probando junto con la otra parte del codigo me sirvio de mucho... una pregunta mas si no es mucha molestia como pudiste dar con la url de donde se hace la peticion... gracias....
 
Voltar
Topo