2010-12-01 16 views
5

Estoy tratando de raspar la cantidad de artículos que uno de mis distribuidores tiene en existencia por producto. No saben cómo exportar estos datos. Entonces, me pregunto si alguien podría ayudarme a orientarme en la dirección correcta sobre cómo raspar un sitio con PHP en el que debe iniciar sesión para acceder a los datos. No es un sitio seguro con SSL.Raspado de sitios PHP con un inicio de sesión seguro

Gracias por cualquier consejo,

Chris Edwards

+1

Tiene que proporcionar más detalles sobre cómo iniciar sesión, como la autenticación de acceso básico, o? – ajreal

Respuesta

12

La forma más fácil de llegar a donde quieres es mediante la utilización cURL. La función básica de cURL es que le permite configurar una solicitud HTTP configurada como la necesita y recibir la respuesta. Esto se puede hacer en varios grados de detalle, según sus necesidades.

Lo que quiere hacer es básicamente hacer una solicitud HTTP para obtener la página que desea y eliminar los datos del código HTML de la respuesta. Esto puede ser muy fácil de hacer, pero en su caso deberá superar algunos obstáculos.

Supongo que al decir "tengo que iniciar sesión" quiere decir que hay un formulario de inicio de sesión que debe pasar antes de poder raspar nada. cURL puede falsificar un inicio de sesión con un poco de ayuda de su parte.

En primer lugar, deberá "enviar" el formulario de inicio de sesión con cURL tal como lo haría a mano. Para asegurarte de que lo hiciste bien, necesitarás ver las solicitudes HTTP que hace tu navegador al enviar el formulario a mano y construir solicitudes idénticas con cURL. Para ver las solicitudes HTTP en detalle, puede usar Firebug, las herramientas para desarrolladores de Chrome o el absolutamente fantásticoFiddler debugging proxy.

Lo más probable es que después de enviar un formulario de inicio de sesión válido, el servidor le enviará una cookie que se utilizará para autenticarlo en solicitudes posteriores. Esta cookie formará parte de los encabezados de la respuesta HTTP del servidor (encabezado Set-Cookie). Tendrá que recordar el valor de esa cookie, e incluir un encabezado Cookie en raspaduras posteriores en el servidor; en esencia, está haciendo exactamente lo que haría su navegador si hubiera iniciado sesión ** ¹ **.

Y, por último, es posible que deba realizar más de un viaje de ida y vuelta para encontrar su destino. Tal vez la URL que necesita para raspar no se conoce de antemano, y necesita raspar una página de "lista" para encontrar alguna parte variable de la URL que desea raspar. Esto se puede resolver simplemente abordando el problema por pasos: primero raspe la página de "lista", descubra lo que necesita y luego raspe la página de "detalles" que realmente desea.

No proporciono ningún código, ya que hay muchos tutoriales de CURL en la web, pero creo que saber cuál es el plan hará que su trabajo sea mucho más fácil.


¹ Otro (más rápido, pero en bruto) camino a seguir en torno a hacer esto es simplemente entrando en ti mismo, al ver el valor de la cookie que tienes, y acaba de pegar que en la solicitud de su roce. Lo bueno es que ya no es necesario falsificar un inicio de sesión con cURL; La desventaja es que antes de que cada vez que se use su herramienta, alguien debe iniciar sesión manualmente y proporcionarle las credenciales a su herramienta.

1

hay una biblioteca llamada Curl usted debe buscar en ella

link

que permite a su script para iniciar la sesión, las cookies/sesiones y elimine el contenido de cualquiera de las páginas siguientes, puede establecer la profundidad a la que debería ir y si debe seguir cualquier redirección, etc. incluso podría usarlo para publicar datos. Es una gran herramienta básicamente.

Aquí es también un enlace a un tutorial donde se puede ver paso a paso cómo funciona

http://devzone.zend.com/article/1081

+0

-1. Aunque esto es formalmente correcto, esto no lo ayuda más. Solo decir "usar X" no califica como una buena respuesta. – user187291

+0

he proporcionado un enlace a su sitio web donde hay un documental sobre cómo usar la biblioteca junto con php y dijo que la sugerencia no me da una función que hace todo lo que quiero. – Breezer

Cuestiones relacionadas