Pregunta

Esto no es realmente una programación de la pregunta, más de un algoritmo de uno.

El problema:Encontrar el "contenido" de la sección de una página HTML.

Por "contenido", me refiero a la dom que contiene el contenido de la página como se ve por los seres humanos, sin el ruido, simplemente la página "contenido real".Sé que el problema no está bien definido, pero vamos a seguir...Por ejemplo, en los sitios de blog, esto es por lo general es fácil, cuando se navega a un puesto específico, usualmente tiene algunas barras de herramientas en la parte superior de la página, tal vez algunos elementos de navegación en el lado izquierdo y, a continuación, usted tiene el div que contiene el contenido.Tratando de entender esto del HTML puede ser complicado.Sin embargo, afortunadamente, la mayoría de los blogs tienen feeds RSS y en la alimentación para este post te iba a encontrar una <description> sección (o <content:encoded>) y esto es exactamente lo que usted desea.Así, para refinar la definición del contenido, esta es la cosa real en la página que contiene la parte interesante, la eliminación de todos los anuncios, elementos de navegación, etc.Por lo que encontrar el contenido de los blogs es relativamente fácil, suponiendo que se han RSS.Lo mismo va para otros RSS de los sitios de apoyo.

¿Qué acerca de los sitios de noticias?En muchos casos, los sitios de noticias han RSS, pero no siempre.¿Cómo hace uno para encontrar el contenido en sitios de noticias, entonces?Lo más general los sitios?Muchas páginas web (por supuesto, no todas) tienen sección de contenido y otras secciones.Puede usted pensar en un buen algoritmo para encontrar las secciones que son "interesantes" v/s el menos interesante?Tal vez las secciones que cambiar de aquellos que no cambian?

La esperanza que me he hecho a mí mismo claro...Gracias!

¿Fue útil?

Solución

Yo no he hecho esto, pero esta sería mi enfoque general.

Como usted indica, la falta de estructura en la parte visible del contenido de las partes (es decir,no tiene etiquetas, tales como header, navigation, ads) de HTML significa que es más difícil para el hogar en la parte clave de la página.Mi enfoque sería el primero quite los distintos elementos que definitivamente han decidido no son interesantes.Una posible lista de exclusiones podrían ser:

  • meta elementos tales como !doctype, head (toma el title como una pieza separada de datos)
  • elementos dinámicos tales como object, embed, applet, script
  • imágenes (dependiendo de si desea conservar o no), img
  • elementos de formulario, es decir, form, input, textarea, label, legend, select, option

Un segundo paso podría entonces empezar a excluir a los que ocurren comúnmente div o ul id/los nombres de las clases, y todas las etiquetas dentro de ellos, tales como:

  • header, footer, meta
  • nav, navigation, topnav, sidebar
  • ad, ads, adu (y otros nombres usados comúnmente para los anuncios)

Esto se espera que eliminar una cantidad significativa de la decoración de la página.El siguiente reto es tratar de identificar el contenido principal de lo que queda, y yo sugeriría que, inicialmente, suponiendo que el autor del sitio es el uso de HTML semántico correctamente, y así es, principalmente, el uso de la h1, h2 etiquetas de la cabeza y el p etiqueta de párrafo.

Para identificar el contenido, me gustaría ver de cualquier etiqueta de encabezado que es seguido por una etiqueta de párrafo(s).(Esto puede ser h2 por su contenido principal;el h1 etiqueta a menudo (y posiblemente incorrectamente) se utiliza para mostrar el nombre del sitio o el logotipo, pero esperamos que esto ha sido eliminado por excluyendo el encabezado de las partes de la página.) Cada párrafo siguiente debe añadirse al contenido actual hasta llegar a un descanso, que bien podría ser el final de la div o td elemento, o podría ser un elemento de encabezado del mismo nivel desde la que comenzó.

Como todavía puede haber varios conjuntos de contenido que hemos reunido en la página (tal vez el contenido principal más de la propaganda acerca de la autora), usted necesita para poner a prueba y perfeccionar la toma de decisiones, paso a paso aquí que elige al candidato más probable.Esto a menudo simplemente ser el más grande, tanto en términos de duración y el número de elementos de párrafo utilizado.

Como que se reúnen más de los ejemplos de contenidos, puede agregar medidas de apoyo a su algoritmo;esto podría ser lo que usted cuenta de que muchos de los que utilizan las páginas div id="content" o id="maincontent".También puede ser útil para conservar los elementos secundarios de contenido que usted detectado, de manera que si algunos sitios tienen una curiosa manera de estructurar el contenido, entonces una vez que haya agregar un catcher en su algoritmo se puede volver a ejecutar contra sólo el contenido de este sitio.

Otros consejos

Un sitio bien estructurado tendrá sus áreas comunes reutilizando el mismo código, p. navegación, encabezado y etc.

Cuando tenga una página de destino que le gustaría analizar, intente navegar a través de algunas otras páginas bajo el mismo dominio / subdominio y encuentre elementos que sean comunes a todas las páginas. Esos son los ruidos de los que quieres deshacerte.

Luego puede echar un vistazo a lo que queda, para ver si algunos ruidos se filtraron. Cuando haya reunido una cantidad razonable de esos datos, intente encontrar algún patrón en ellos. Refina tu lógica y repite.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top