Crawler desde la entrada hasta la cárcel (4) - solicitudes y expresiones regulares

Enunciado: ¿Por qué no hay 3? La pregunta es que la revisión es difícil de aprobar y es difícil de aprobar después de cambiarla varias veces. Pero el problema no es grande.3 es un caso de etapa, que no afecta el aprendizaje posterior.

El contenido del artículo es de "desarrollo del rastreador de Python"

4.1 Biblioteca de terceros de Python

4.1.1 Introducción a las bibliotecas de terceros

En el proceso de desarrollo de Python, a menudo es necesario extraer algún código con funciones más generales como un módulo separado, para que múltiples proyectos puedan llamarlo. Este módulo público se denomina biblioteca de Python (Library, Lib). Cuando se lance, Python vendrá con algunas bibliotecas de uso común desarrolladas por el oficial, como la expresión regular "re", tiempo "tiempo", etc. Estas bibliotecas se denominan "bibliotecas oficiales". Las bibliotecas publicadas por bibliotecas no oficiales se denominan "bibliotecas de terceros". Python es tan poderoso precisamente porque tiene muchas bibliotecas de terceros. Usando bibliotecas de terceros, varias funciones se pueden implementar fácilmente. Tomando como ejemplo la obtención del contenido de una página web, Python en realidad viene con dos módulos, urllib y urllib2. El contenido web también se puede obtener utilizando estos dos módulos. Pero estos dos módulos son muy engorrosos de usar. Y las solicitudes, una biblioteca de terceros, hacen que sea extremadamente fácil obtener contenido de la página web.

4.1.2 Instalación de bibliotecas de terceros

win+r - ingrese cmd - nombre de la biblioteca de instalación de pip - ingrese

Después de instalar la biblioteca de terceros, puede usarla en Python. Al usar una biblioteca de terceros, al igual que usar la biblioteca que viene con Python, primero debe importarla usando la palabra clave "importar" antes de poder usarla. Otro punto que debe enfatizarse es que el nombre del archivo .py escrito por el desarrollador no debe ser el mismo que el nombre del módulo que viene con Python o la biblioteca de terceros que se ha instalado, de lo contrario, se producirán problemas. . Por ejemplo, el contenido de este capítulo involucra solicitudes y expresiones regulares, por lo que el lector no debe crear un archivo llamado "requests.py" o "re.py" al probar el código. Una vez creado, el código debe reportar un error.

4.1.3 Instalación de solicitudes

pip install requests

4.2 solicitudes para obtener el código fuente de la página web

Usando un navegador para visitar la página web, parece que todo lo que necesita hacer es ingresar la URL. Pero, de hecho, hay muchas formas de abrir páginas web, las más comunes son GET y POST. La página a la que se puede acceder directamente introduciendo la URL en el navegador utiliza el método GET. También hay algunas páginas que solo se pueden omitir haciendo clic en un enlace o un botón de otra página, y no se puede acceder directamente ingresando la URL en el navegador.Este tipo de página utiliza el método POST.

4.2.1 Método OBTENER

Para las páginas web que usan GET, puede usar el método de solicitudes get() en Python para obtener el código fuente de la página web:

import requests
html = requests.get('网址')
html_bytes=html.content
html_str=html_bytes.decode()

En estas 4 líneas de código, la primera línea importa la biblioteca de solicitudes para que pueda usarse en el código. La línea 2 obtiene la página web mediante el método GET y obtiene un objeto de respuesta. En este punto, si imprime la variable HTML directamente, obtiene: Por favor agregue la descripción de la imagen
La línea 3 usa la propiedad .content para mostrar el código fuente de la página web de tipo bytes. La cuarta línea de código decodifica el código fuente de la página web de tipo bytes en el código fuente del tipo de cadena.
Para las 4 líneas de código anteriores, las últimas 3 líneas se pueden combinar y reducir a dos líneas de código:

import requests
html_str=requests.get('网址').content.decode()

La razón por la que es necesario decodificar datos de tipo bytes en datos de tipo cadena es que el chino no se puede mostrar normalmente bajo el tipo de datos de tipo bytes. El inglés correspondiente a este "decode" es "decode", por lo que necesitamos usar el método .decode(). Los parámetros de este método se pueden omitir. Cuando se omite, el formato de codificación UTF-8 se usa de forma predeterminada para decodificar el tipo de bytes en el código fuente del tipo de cadena. Puede haber algunas páginas web chinas cuyo formato de codificación en sí mismo no sea UTF-8, lo que requiere que el nombre del formato de codificación de destino se escriba entre paréntesis.Por favor agregue la descripción de la imagen

4.2.2 Método POST

Además del método GET, también existen métodos POST para acceder a páginas web. Hay algunas páginas web que usan GET y POST para acceder a la misma URL y los resultados son diferentes. Hay otras páginas web a las que solo se puede acceder mediante el modo POST. Si utiliza el modo GET para acceder, el sitio web devolverá directamente un mensaje de error.

import requests
data={
    
    'key1':'value2','key2':'value2'}
html_data=requests.post('网址',data=data).content.decode()

El contenido y la cantidad de elementos en el diccionario de datos deben modificarse de acuerdo con la situación real. La clave y el valor son diferentes en diferentes sitios web. Como rastreador, construir este diccionario es una de las tareas.

También hay algunas URL y el contenido enviado debe estar en formato JSON, por lo que es necesario modificar los parámetros del método post():

html_json=requests.post('网址',json=data).content.decode()

Al escribir el código de esta manera, las solicitudes pueden convertir automáticamente el diccionario en una cadena JSON. El formato JSON se describirá en detalle en los siguientes capítulos.

4.3 La combinación de solicitudes y expresiones regulares

Simplemente asigne el código fuente de URL obtenido al segundo parámetro de la expresión regular.

Supongo que te gusta

Origin blog.csdn.net/weixin_55159605/article/details/124134277
Recomendado
Clasificación