Cómo crear un analizador HTML de adaptación automática

Gracias por el A2A! No puedo decir que soy un experto en el tema, pero aquí están mis dos centavos.

Dado que los sitios web y sus plantillas varían enormemente, no creo que pueda encontrar una solución que funcione en todas partes. Algunos sitios están construidos muy bien con etiquetas semánticas HTML5, mientras que otros incluirán su contenido dentro de etiquetas div básicas o, me atrevo a decirlo, celdas de tabla.

Además, algunos sitios tienen contramedidas contra las personas que rastrean su valioso contenido y lo muestran en otros lugares sin sus anuncios. (Consulte: Raspadores de contenido: cómo averiguar quién está robando su contenido y qué hacer al respecto). Si lo hace funcionar, no se sorprenda si recibe un correo enojado o dos de bloggers y autores de artículos.

Lo que sugeriría es configurar algunos motores de raspador diferentes y crear algún tipo de algoritmo simple para elegir cuál usar, por dominio. Si un motor te da demasiado o muy poco contenido, ejecuta uno diferente. Mantenga todo automatizado, pero permita anulaciones manuales si es necesario.

Un ejemplo de un motor de raspador podría ser un analizador DOM que recupera el contenido de cualquier etiqueta

, eliminando cualquier divs con cualquier cosa que tenga la palabra “comentario” en sus clases. Otro podría recuperar todas las etiquetas

después de un elemento de encabezado, como sugirió Bhavesh. Deje que su algoritmo elija qué motor usar en función de las etiquetas en el HTML, posiblemente también con algo más.

Obtenga una gran cantidad de datos y ejecute su algoritmo. Explore los resultados y observe los malos resultados. Ajustar hasta obtener (en su mayoría) resultados satisfactorios. Crea anulaciones manuales para el resto.

Algunas cosas que puedes probar (no estoy seguro de la complejidad o la posibilidad de esto)

  1. Suponiendo que todos los sitios web sigan los estándares de codificación, puede analizar fácilmente el texto para la etiqueta < artículo >. Todo su contenido requerido estará debajo de él. En el caso de un blog, la lista de todas sus publicaciones con extracto puede estar debajo de estas etiquetas.
  2. Puede encontrar el elemento que ocupa la mayor parte del espacio. Todos los demás elementos, ya sea el logotipo o el encabezado completo, siempre serán más pequeños que el contenido principal. Si puede de alguna manera, al verificar el CSS encontrar el elemento que ocupa el espacio máximo, su problema se resuelve. (Debe ocuparse de las divisiones anidadas aquí o de lo contrario su algoritmo siempre apuntará hacia el html o la etiqueta del cuerpo)
  3. Si sus artículos siguen una secuencia particular, puede buscar la secuencia de etiquetas html y obtener sus datos. Por ejemplo, la mayoría de los artículos tendrán primero un elemento de encabezado y luego un párrafo, tal vez una imagen intermedia. Entonces, todo lo que necesita hacer es buscar un encabezado ( H1 / H2 … ) y luego un párrafo ( p ). Y si encuentra esta secuencia en una sola división, lo más probable es que tenga su artículo.

También debe intentar averiguar cómo funciona otro rastreador, o tal vez la otra ronda, encontrar cómo crear sitios web amigables para SEO y puede obtener una pista.

Espero que esto sea de ayuda. Avísame si alguno de estos puntos te funciona.

🙂

Sinceramente, no entiendo todo lo que estás tratando de hacer. Supongo que ha buscado en 1000 sitios web potenciales de los que desea extraer algunos de los contenidos de su sitio web, ¿verdad? El contenido extraído debe tener un máximo de 3 páginas de cada sitio web rastreado, estas páginas deben estar relacionadas con el blog, necesita el texto y / o (información sobre las páginas) no las páginas completas.

Escribir un programa que haga esto es posible. Buscar, comprimir, extraer y guardar, luego exportar. Su sitio web debe tener un tema fijo para esta situación. Recuerdo que hace un tiempo, un joven de 17 años vendió un programa similar a http://yahoo.com por 30 millones.

No conozco una forma más fácil de hacer esto, creo que puede haber herramientas que puedan realizar estas tareas paso a paso.

1. Rastrear y localizar las páginas. (1er paso logrado)
2. Seleccione páginas y guarde contenido en formato .txt. (Medio hecho, puede establecer parámetros para rechazar páginas comunes o guardar solo páginas con una longitud de título de página específica)
3. Exporte nuevamente a su sitio web temático. (Encuentra el programa)

Escriba su pregunta y solicitud también en otros foros como stack-overflow y git-hub, puede encontrar a alguien que lo ayude.

Esta es una pregunta difícil, ya que no creo que haya una solución que funcione para cada uno.

Primeras ideas que me vienen a la mente:
– buscando la sección más larga

?
– mantenga una base de datos de etiquetas de identificación que contengan los artículos, verifique cada una de ellas con cada sitio web y, si encuentra una, extraiga el artículo. Si no, muéstrelo donde puede verificar manualmente cuál es la etiqueta de identificación con las herramientas de desarrollo de Chrome o algo así.

Si tiene una solución perfecta, hágamelo saber, me encantaría implementarla aquí:
http://jakemor.com/sumitup

Seguiré pensando y comentando si se me ocurre más: abordar un vuelo en este momento, así que tengo que ir \ U0001f603

¿Quizás pueda considerar esto como un problema de detección de funciones de aprendizaje automático? Por ejemplo, puede recopilar tantas características como sea posible y tener un conjunto de datos de entrenamiento que identifique las características manualmente para ejecutar un modelo. Tal vez ejecute PCA en él.

Agradable, este tipo de cosas es lo que odiamos y amamos al mismo tiempo. Lanzaré algunas ideas aquí.

¿Qué pasa con diferentes AST html? Es similar a lo que está haciendo y si existe una herramienta para crear un AST desde html, todas las partes comunes probablemente sean menús, barras de navegación, logotipos, comentarios, etc. Al menos el nodo superior no debería, aproximadamente, cambiar eso mucho.

Lo investigaré y volveré aquí.

More Interesting

¿Cuál sería el mejor curso o certificaciones para los novatos en el campo de TI para obtener un buen trabajo?

¿Qué necesito agregar a mi CV para obtener una pasantía? Hice programación competitiva todo el verano pasado.

Cuando los ingenieros de software hablan de 'migrar' algo, ¿a qué se refieren típicamente?

Quiero construir un software basado en la web y tener un equipo de ingenieros de software listo para construirlo. ¿Con qué empiezo?

Cómo pasar de un ingeniero de software a un gerente de producto

¿Cuántos años llevará ser un ingeniero de software senior?

Singapur o Dubai, ¿cuál es mejor para los ingenieros de software en términos de perspectivas de trabajo?

¿Pueden los ingenieros de software hacer videojuegos?

Soy un viejo estudiante ¿Debo ser ingeniero de software o analista cuantitativo?

¿Quiénes son algunas de las personas (y sus historias) que todos los ingenieros de software deberían conocer?

¿Qué debe esperar un ingeniero sénior, un doctorado y más de 20 años de experiencia en ingeniería / software cuando se entrevista con Google? ¿Cómo debo prepararme?

¿Cómo es trabajar en la Fundación Wikimedia como ingeniero de software?

¿Cómo es el proceso de entrevista en Microsoft Irlanda?

¿Puede uno convertirse en ingeniero con un título médico y con experiencia como desarrollador de software full stack?

Consejo profesional: ¿Mis expectativas sobre cómo realizo mi trabajo como ingeniero de software en la prueba son completamente erróneas?