Curso de crecimiento en la manipulación de HTML desde Shell Script

Automatizar cualquier cosa que involucre datos de Internet puede ser confuso cuando se trata de páginas generadas por usuarios. Por ejemplo, supongamos que desea extraer datos de una página que se carga después de usar un cuadro de búsqueda. [Andrew Peng] publicó un ejemplo rápido y sucio para ayudarlo a escribir sus propios guiones. El ejemplo que usó es verificar las existencias en uno de los sitios web que visita. Su proceso describe la búsqueda del enlace al que se envían todas las búsquedas, el establecimiento del método utilizado para enviar la cadena de búsqueda y la captura de los datos resultantes. Lo analiza y envía un correo electrónico si encuentra lo que está buscando. Pero esto podría usarse para muchas cosas, y no debería ser un problema llamar su atención de cualquier manera que pueda imaginar. Tal vez usemos esto para agregar alguna funcionalidad a nuestra rata.

  • Aarón dice:

    Guau. ¿Y la gente me persigue por escribir scripts en Perl?

  • Derek dice:

    El reggae para raspar es débil. Use algo con una interfaz orientada a objetos para el DOM, y probablemente no se rompa tan a menudo.

  • Cynyr dice:

    @Derek, ¿tiene alguna sugerencia? Podría usar un analizador XML, pero la mayoría de los sitios fallarán porque generalmente no son válidos para XML. He escrito algunos tipos de "convertir datos de sitios web en iCalendar y enviarlos al calendario de Google" tipos de "scripts" en python usando reggae. Parece que funcionan.

    Por supuesto, estaría más interesado en cómo cargar algunos rayos desde un sitio sin el sitio completo para que pueda hacer que el usuario de mi aplicación presione el botón para verificar que sea humano. Ah, y me gustaría que funcione en * nix, Windows XP y superior, y OSX.

  • pwnr_69 dice:

    Sí, un analizador doméstico funciona muy bien. Xpath y xsl también ayudan a acelerar las cosas.

    Puede limpiar / convertir las cosas a xml / html adecuado antes de usar el análisis interno revisando los datos, creo que primero es htmltidy o prettyhtml.

  • Cerebro de hielo dice:

    Usar analizador HTML...

    "Beautiful Soup es un analizador Python HTML/XML diseñado para proyectos rápidos como el raspado de pantalla".
    http://www.crummy.com/software/BeautifulSoup/

  • Oktel dice:

    Poder - buena elección 🙂

  • Geco dice:

    @Cynyr, hay una buena biblioteca de Python llamada "buen jabón" para analizar HTML. Es bastante tolerante con el código HTML/XML incorrecto y está bien documentado (incluidos muchos pequeños ejemplos). Tal vez funcione para ti.

  • CH dice:

    @IceBrain

    BeautifulSoup ya no se guarda y tampoco maneja HTML roto. Scrapy es una mejor opción para el web scraping, o tal vez Mechanize + PyQuery es algo más simple que se necesita; Usar Python es (¿y por qué no?).

  • timmah dice:

    Apoyaré el llamado de CH para usar Perl :: Mechanize. Es como lwp pero mejor. Incluso puede iniciar sesión en https sitez con él. w00t.

  • Cynyr dice:

    Gracias a todos por las sugerencias, me gusta el lxml. Por supuesto, ninguno de ellos lo ayudará si necesita ejecutar JS o Lightning Bits para obtener los datos que desea / necesita. Hay algunos sitios web que no hacen nada más que servir una cookie flash y algunos JS, y luego usan el JS y la cookie flash para cargar el resto de los datos, para evitar el raspado. estúpido si me preguntas, pero ohhh está bien.

  • que no dice:

    Odio tanto esas cosas, los rayos y los intentos paralizantes de JS.
    O, a veces, simplemente usan un software o una plantilla de creación web estúpidos y no saben mejor y ni siquiera está destinado a ser una cadena de bloques.
    No le gusta mientras ni siquiera se dedica a escribir estas cosas y raspar.

  • janisozaur dice:

    te puede interesar YQL: http://developer.yahoo.com/yql/ te permite consultar internet como si fuera una base de datos.
    Otras cosas que te podrían interesar serían las alertas de búsqueda de Google: haces una pregunta y cuando hay resultados, se te notifica por correo electrónico y también yahoo pipes, que es un "motor de rss personal": puedes editar, modificar, filtrar... Canales RSS, sitios web, operarlos con servicios externos, etc.

  • Un dron dice:

    ¡Ay, Perla!

  • omgkittenz dice:

    En primer lugar, configure siempre un agente de usuario falso como mozilla o, de lo contrario, el administrador podría pensar que usted es un robot y sacarlo del sitio.

    En segundo lugar es mejor hacerlo en phpcurl de una forma más sencilla y elegante.

  • CH dice:

    @Timmah:

    De hecho, apunté al módulo de Python, pero nunca usé el perl.

    También puede haber un módulo de python para eliminar que puede raspar los datos requeridos. Probaría una subred de programa o un desbordamiento de pila.

  • logan dice:

    @CH, BeautifulSoup todavía se guarda. De hecho, el más reciente (3.2.0) se lanzó el 21 de noviembre de 2010. Es un paquete maravilloso y, según mi experiencia, maneja correctamente HTML roto.

  • CH dice:

    @logan

    ver el cambio -> loghttp: //www.crummy.com/2010/11/21/0

    Hay muy pocos cambios, el cambio principal fue el número de versión.

    El autor también menciona que no está trabajando en BS. Teniendo en cuenta esto y los problemas que la gente ha tenido con HTML roto, especialmente contra lxml (no puedo comentar sobre su propia experiencia), creo que se ha descuidado.

  • CH dice:

    el enlace de arriba debe ser http://www.crummy.com/2010/11/21/0

  • CH dice:

    Ahora que lo pienso, no usaría Scrapy.
    No es agradable de usar para proyectos que no involucran rastreo (¿minería?) controlado por shell a gran escala.

Óscar Soto
Óscar Soto

Deja una respuesta

Tu dirección de correo electrónico no será publicada.