Raspagem com PHP Simple HTML DOM erro de verificar página

  • 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!
Buenas estoy trabajando con simple html dom, hasta ayer normal el trabajo de las paginas pero me salio un error, al continuar con el raspado de una pagina.

Advertencias: file_get_contents (https://www.plusvalia.com/departamentos-en-venta-en-quito-pagina-9.html): no se pudo abrir la secuencia: ¡Error en la solicitud HTTP! HTTP / 1.1 403 Prohibido en C: \ xampp \ htdocs \ scrapcsv \ ecuador \ quito \ simple_html_dom.php en la línea 136

luego de verificar la página al intentar ingresar me pide:

003.webp



mi consulta es si hay alguna manera de pasar eso y seguir con el raspado de la página intente de varias maneras pero aún no hay logro dar con algún método.
adjunto mi código de raspado:

[CÓDIGO] <? Php

$ db = nuevo PDO ('mysql: host = localhost; dbname = infosantacruz; charset = utf8mb4', 'root', '');
$ db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
$ db-> setAttribute (PDO :: ATTR_EMULATE_PREPARES, falso);

requiere 'simple_html_dom.php';



$ url = 'https://www.plusvalia.com/departamentos-en-venta-en-quito-pagina-9.html';

$ html = file_get_html ($ url);

$ posts = $ html-> find ('div [clase = publishing-header]');

foreach ($ publicaciones como $ publicaciones) {

$ link = $ post-> find ('h3 a', 0);
$ url = $ enlace-> attr ['href'];
$ title = $ link-> innertext;



$ url = 'https: //www.plusvalia.com'.$url;


echo "<table border = '2'>";
echo "<tr>";
echo "<td>", $ url, "\ n", "</td>";
echo "</tr>";
echo "</table>";

$ html = file_get_html ($ url);

$ posts = $ html-> find ('div [id = main-container]');

foreach ($ publicaciones como $ publicaciones) {


$ titulo = $ post-> find ('div [clase = sección-título] h1', 0);



$ prec = $ post-> find ('div [clase = bloque-precio bloque-fila] div', 1);
$ prec2 = $ post-> find ('div [clase = fila css-border-n] span', 1);
$ precio = $ prec. $ prec2;


// $ telefono = $ post-> find ('div [clase = mdl mdlContent-simpleCenter mdl-modal mdl-modal-postlead] a', 0) -> attr ['href'];



$ latitud = $ post-> find ('div [class = article-map] img', 0) -> attr ['src'];
$ longitud = $ post-> find ('div [class = article-map] img', 0) -> attr ['src'];



$ a = $ post-> find ('li [clase = icono-característica] b', 0);
$ b = $ post-> find ('li [class = icon-feature] span', 0);
$ datos1 = $ a. $ b;


$ c = $ post-> find ('li [clase = icono-característica] b', 1);
$ d = $ post-> find ('li [class = icon-feature] span', 1);
$ datos2 = $ c. $ d;


$ e = $ post-> find ('li [clase = icono-característica] b', 2);
$ f = $ post-> find ('li [class = icon-feature] span', 2);
$ datos3 = $ e. $ f;


$ g = $ post-> find ('li [clase = icono-característica] b', 3);
$ h = $ post-> find ('li [class = icon-feature] span', 3);
$ datos4 = $ g. $ h;


$ i = $ post-> find ('li [clase = icono-característica] b', 4);
$ j = $ post-> find ('li [class = icon-feature] span', 4);
$ datos5 = $ i. $ j;


$ k = $ post-> find ('li [clase = icono-característica] b', 5);
$ l = $ post-> find ('li [class = icon-feature] span', 5);
$ datos6 = $ k. $ l;


$ m = $ post-> find ('li [clase = icono-característica] b', 6);
$ n = $ post-> find ('li [class = icon-feature] span', 6);
$ datos7 = $ m. $ n;





$ publi = $ post-> find ('section [class = general-section article-section article-section-description] h5', 0);




$ serv = $ post-> find ('sección [clase = sección-general sección-artículo] h4', 1);
$ serv1 = $ post-> find ('sección [clase = sección-general sección-artículo] h4', 2);
$ serv2 = $ post-> find ('sección [clase = sección-general sección-artículo] h4', 3);
$ serv3 = $ post-> find ('sección [clase = sección-general sección-artículo] h4', 4);
$ serv4 = $ post-> find ('sección [clase = sección-general sección-artículo] h4', 5);
$ serv5 = $ post-> find ('sección [clase = sección-general sección-artículo] h4', 6);
$ serv6 = $ post-> find ('sección [clase = sección-general sección-artículo] h4', 7);
$ serv7 = $ post-> find ('sección [clase = sección-general sección-artículo] h4', 8);

$ observa = $ serv. $ serv1. $ serv2. $ serv3. $ serv4. $ serv5. $ serv6. $ serv7;






$ zona = $ post-> find ('div [clase = sección-ubicación] b', 0);


$ link = $ post-> find ('figure img', 0);
$ img = $ link-> attr ['data-flickity-lazyload'];
// $ link = $ post-> find ('div img', 1);
// $ im = $ link-> attr ['src'];
$ im = $ post-> find ('div [clase = elemento-galería js-openDevelopmentMultimedia] img', 0) -> attr ['src'];
$ imagen = $ img. $ im;




$ link = $ post-> find ('figure img', 1);
$ img1 = $ link-> attr ['data-flickity-lazyload'];
$ im1 = $ post-> find ('div [clase = elemento-galería js-openDevelopmentMultimedia] img', 1) -> attr ['src'];
// $ link = $ post-> find ('div img', 2);
// $ im1 = $ link-> attr ['src'];
$ imagen1 = $ img1. $ im1;


$ link = $ post-> find ('figure img', 2);
$ img2 = $ link-> attr ['data-flickity-lazyload'];
$ im2 = $ post-> find ('div [clase = elemento-galería js-openDevelopmentMultimedia] img', 2) -> attr ['src'];
// $ link = $ post-> find ('div img', 3);
// $ im2 = $ link-> attr ['src'];
$ imagen2 = $ img2. $ im2;


$ link = $ post-> find ('figure img', 3);
$ img3 = $ link-> attr ['data-flickity-lazyload'];
$ im3 = $ post-> find ('div [clase = elemento-galería js-openDevelopmentMultimedia] img', 3) -> attr ['src'];
// $ link = $ post-> find ('div img', 4);
// $ im3 = $ link-> attr ['src'];
$ imagen3 = $ img3. $ im3;



$ link = $ post-> find ('figure img', 4);
$ imagen4 = $ link-> attr ['data-flickity-lazyload'];







echo "++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++ ";

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>", $ longitud, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ latitud, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ datos1, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ datos2, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ datos3, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ datos4, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ datos5, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ datos6, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ datos7, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ publi, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
// echo "<td>", $ telefono, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ observa, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ zona, "\ n", "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>", $ imagen, "\ n", "</td>";
echo "<tr>";
echo "<td>", $ imagen1, "\ n", "</td>";
echo "<tr>";
echo "<td>", $ imagen2, "\ n", "</td>";
echo "<tr>";
echo "<td>", $ imagen3, "\ n", "</td>";
echo "<tr>";
echo "<td>", $ imagen4, "\ n", "</td>";
echo "</tr>";
echo "<td>", $ im, "\ n", "</td>";
echo "<tr>";
echo "<td>", $ im1, "\ n", "</td>";
echo "<tr>";
echo "<td>", $ im2, "\ n", "</td>";
echo "<tr>";
echo "<td>", $ im3, "\ n", "</td>";
echo "</tr>";
echo "</table>";


$ stmt = $ db-> prepare ("INSERT INTO quitoplusdptos (titulo, precio, longitud, latitud, datos1, datos2, datos3, datos4, datos5, datos6, datos7, publi, telefono, observa, zona, url, imagen, imagen1, imagen2, imagen3, imagen4) VALORES 🙂 titulo,: precio,: longitud,: latitud,: datos1,: datos2,: datos3,: datos4,: datos5,: datos6,: datos7,: publi,: telefono,: observa, : zona,: url,: imagen,: imagen1,: imagen2,: imagen3,: imagen4) ");

$ stmt-> execute (array (
': titulo' => $ titulo,
': precio' => $ precio,
': longitud' => $ longitud,
': latitud' => $ latitud,
': datos1' => $ datos1,
': datos2' => $ datos2,
': datos3' => $ datos3,
': datos4' => $ datos4,
': datos5' => $ datos5,
': datos6' => $ datos6,
': datos7' => $ datos7,
': publi' => $ publi,
': telefono' => $ telefono,
': observa' => $ observa,
': zona' => $ zona,
': url' => $ url,
': imagen' => $ imagen,
': imagen1' => $ imagen1,
': imagen2' => $ imagen2,
': imagen3' => $ imagen3,
': imagen4' => $ imagen4));

$fected_rows = $ stmt-> rowCount ();


}

} [/ CÓDIGO]

Me seria de mucha ayuda si alguien pudo resolver alguna vez esto, o si tenía algún método para pasar esto ... 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
Me seria de mucha ayuda si alguien pudo resolver alguna vez esto, o si tenía algún método para pasar esto ... Gracias

Me parece mas un error de derechos: Prohibido en C
 
utiliza algun proxy,
 
Gracias, estoy en eso...
Si alguien logro pasar por eso, le agradecería mucho alguna pauta, o sugerencia de como hacerlo... gracias..
 
Te han detectado como un posible bot al hacer muchas peticiones al sitio web, por ello sale ese sitio para comprobar que eres humano.

Por que no intentas realizar la petición, agregando cabeceras básicas como el user agent, el referer, accept, etc. para aparentar que eres un navegador web, ademas bajarle el tiempo de cada petición por ejemplo cada 1 minuto o cada 30 segundos.

Puedes usar la clase de este usuario para obtener el HTML y luego de eso obtener los datos que necesitas.

 
Voltar
Topo