Red de conocimiento informático - Problemas con los teléfonos móviles - Biblioteca de análisis de red Python: utilice request-html para rastrear páginas web

Biblioteca de análisis de red Python: utilice request-html para rastrear páginas web

Existen muchas bibliotecas para analizar páginas web en Python, incluidas BeautifulSoup y lxml. Los artículos sobre rastreadores en Internet generalmente presentan la biblioteca BeautifulSoup. Normalmente uso esta biblioteca. Recientemente, uso mucho Xpath. No estoy acostumbrado a usar BeautifulSoup. Sé desde hace mucho tiempo que Reitz tiene una biblioteca llamada Requests-HTML. No estoy interesado en leerlo, pero tal vez tenga la oportunidad de usarlo esta vez

Usando pip, puedes usar una biblioteca llamada Requests-HTML.

Utilice pip install request-html para instalarlo. Es tan fácil de usar como las otras bibliotecas de Reitz:

Esta biblioteca se implementa sobre la biblioteca de solicitudes y se obtiene el resultado. por r es una subclase del objeto Respuesta con múltiples atributos html. Por lo tanto, r puede hacer cualquier cosa que la biblioteca de solicitudes pueda hacer con un objeto Respuesta. Si necesita analizar una página web, puede obtener directamente el atributo html del objeto Respuesta:

Tenemos que admirar a Reitz por ser tan bueno combinando técnicas. De hecho, HTMLSession hereda de la clase principal request.Session y luego anula el método de solicitudes de la clase request.Session para devolver su propio objeto HTMLResponse, que a su vez hereda de request.Response, pero tiene un método _from_response adicional para construir el instancia:

Después de definir el método de atributo html en HTMLResponse, puede acceder a él a través del atributo html, y la forma de lograrlo es ensamblar PyQuery para completarlo. La mayoría de las clases de análisis principales utilizan PyQuery y lxml para realizar el análisis, simplificando los nombres, lo cual es bastante agradable.

Hay dos métodos para posicionar elementos:

Los nombres de los métodos son muy simples y se ajustan al estilo elegante de Python. La siguiente es una breve introducción a estos dos métodos:

p>

Posicionamiento de elementos Después de eso, debe obtener el contenido y los datos de atributos dentro del elemento para obtener el texto:

Para obtener los atributos del elemento:

Usted También puede usar la coincidencia de patrones con el contenido:

Esto parece ser una optimización de características muy trivial, tal vez pueda enviarse a github.

Además de las funciones básicas, la biblioteca también proporciona algunas operaciones fáciles de usar. Por ejemplo, obtener todos los hipervínculos de una página web con un solo clic debería ser una gran ayuda para los rastreadores de sitios completos, ya que hace que la administración de URL sea más conveniente:

Las páginas de contenido generalmente están paginadas y no se puede publicar demasiado contenido. La biblioteca rastreada al mismo tiempo puede obtener información de paginación:

Los resultados son los siguientes:

El descubrimiento inteligente de la paginación se implementa a través de iteradores y se utilizará un método llamado _next. Este iterador utilizará un método llamado _next, pegará el código fuente para tener una idea:

Determine si hay una página siguiente al encontrar si la etiqueta a contiene el texto especificado; generalmente nuestra página siguiente ser Una página conduce o carga más, lo cual utiliza esta etiqueta para determinar. Por defecto hay una lista global: [siguiente', 'más', 'más antiguo']. Personalmente, encuentro este enfoque muy inflexible y difícil de escalar. Si está interesado, puede enviar la optimización del código a github.

Quizás considerando la carga asincrónica de algunos js ahora, esta biblioteca admite el tiempo de ejecución de js. La descripción oficial es la siguiente:

Su uso es muy simple, solo necesita llamar a lo siguiente. método:

La primera vez que lo use, descargará Chromium, pero también conoce la situación en China, así que descúbralo usted mismo y no espere a que se descargue solo. La función de renderizado le permite manipular la página usando scripts js y establece parámetros separados para el desplazamiento. Esto es muy compatible con nuevos estilos de página (como la carga desplegable).