urllib biblioteca básica de Python rastreador web

En python3 en, urllib y urllib2 dos bibliotecas en una sola biblioteca, biblioteca unificada urllib.

biblioteca urllib se construye biblioteca solicitud Python HTTP, que comprende las siguientes cuatro módulos principales:

  • solicitud: la básica, la petición HTTP es el módulo más importante para la solicitud de transmisión analógica.
  • de error: módulo de control de excepciones.
  • analizar: un módulo de herramienta, un método de procesamiento URL muchos, la resolución, la resolución, y similares combinado.
  • robotparser: utilizado para identificar el archivo robot.txt sitio para determinar el sitio se puede subir

Módulo 1.Solicitud: envío de una solicitud

módulo de envío de solicitud se puede realizar y obtener como respuesta a la petición. Principalmente en los métodos siguientes:

1.urlopen ()

Con el método básico urlopen () puede llevarse a cabo petición básica página GET. Por ejemplo, con Baidu, por ejemplo:

import urllib.request
response=urllib.request.urlopen("http://www.baid.com")
print(response.read().decode("utf-8"))

Ejecutar la pieza de código anterior para obtener los siguientes resultados:

Por lo tanto, llegamos a la variable de respuesta es lo que, imprimir lo que puede ver es un tipo de "<clase 'http.client.HTTPResponse'>" clase de objeto, los principales atributos MSG, la versión, el estado, la razón, etc. se leen los principales métodos (), readinto (), getHeader (nombre), getHeaders () y similares. Obtener este objeto podemos llamar a estos métodos y propiedades de.

Por ejemplo, en el ejemplo anterior, dijo Baidu sitio web que eran unos pocos casos en los que la llamada de la siguiente manera:

de respuesta propiedades de objeto de clase

Si desea vincular a pasar algunos parámetros de la forma de operar que, en primer lugar ver el documento en la interpretación de la función urlopen ():

* Urllib.request.urlopen (url, datos = Ninguno, tiempo de espera = <object objeto en 0x000000000049D760>, , cafile = Ninguno, capath = Ninguno, cadefault = False, el contexto = None)

Podemos ver, hay varios otros parámetros, además de url. Hemos introducido una por una.

  • parámetros de datos

parámetro opcional, pero si desea agregar el parámetro bytes necesidad () se convierte en formato de flujo de bytes del contenido. Añadir este parámetro del método de petición GET se convierte en la POST. Por ejemplo, de datos = bytes (urllib.parse.urlencode ({ 'mundo': 'hola'}), que codifica = 'utf-8')

  • parámetro de tiempo de espera

ajuste de tiempo de espera, tales como el establecimiento del tiempo de espera = 1, si la solicitud no se ha superado esta vez en respuesta a una excepción.

2.Request ()

urlopen () es la petición más básico de una biblioteca, se puede obtener el contenido más simple, pero no se puede hacer peticiones más complejas cualquier cosa, como la adición de contenido cabeceras, necesitamos construir un motor más potente método de solicitud. Mira el uso de Solicitud:

import urllib.request

request = urllib.request.Request("https://www.baidu.com")
response = urllib.request.urlopen(request)
print(response.read().decode("utf-8"))

En el código anterior, aunque el mismo método utilizado es de solicitud de transmisión urlopen, pero no el parámetro es un URL, pero una clase de solicitud de objeto. Uso petición se puede ser más flexible y más cómodo en el que los parámetros de configuración.
Solicitar el aspecto de interfaz API como:

urllib.request.Request (url, datos = ninguno, cabeceras = {}, origin_req_host = Ninguno, no verificable = False, method = None)

  • url: parámetro necesario, la URL de solicitud
  • Datos: octeto octetos tipo de flujo
  • encabezados: navegador diccionario disfrazado usado generalmente, en ausencia de este parámetro, el servidor reconoce que visite con Python, nos juzgarán que tire el reptil negro, un anti reptiles
  • origin_req_host: solicitar anfitrión de la fiesta o IP
  • verificable: indica si la solicitud es imposible de verificar, por defecto Falso. Lo que significa que el usuario no tiene derecho a recibir el contenido solicitado.
  • método: la solicitud utilizando métodos tales como GET, POST, PUT, etc.

Módulo 2.error: manejo de excepciones

en urllib módulo define la excepción de error se genera por el módulo de solicitud, si es anormal, el módulo de solicitud de reacción produce una excepción.

1.URLError

urllib error desde el módulo, OSError heredado de la clase, la clase base excepción error módulo, el procesamiento de excepciones puede ser de este modo activado por el módulo de solicitud. Hay una razón por la propiedad, que es las razones equivocadas.

2.HTTPError

URLError subclase, gestión de errores especializado peticiones HTTP, tales como la petición falla, tiene tres propiedades:

  • Código: devuelve un código de estado HTTP, como la página común 404 no existe
  • Motivo: Devuelve la causa del error
  • encabezados: vuelve la cabeza solicitado

Aquí es una excepción más común código de manejo está escrito:

from urllib import request, error

try:
    respons = request.urlopen("www.aaaa.com")
except error.HTTPError as e:
    print(e.reason, e.code, e.headers)
except error.HTTPError as e:
    print(e.reason)
else:
    print("Request Successfully")

Debido HTTPError es una subclase de URLError, por lo que primero puede capturar HTTPError, adquirió su condición, si no, entonces ir a un error de captura URLError, la salida de razones. Finalmente, el procesamiento de la lógica en los demás normal.

Módulo 3.parse: Analizar el Enlace

módulo de análisis sintáctico define la URL de la interfaz estándar, la extracción, la combinación y la conversión de las diversas partes de la URL del enlace.

1.urlparse ()

Vistazo a un ejemplo, ejecute el siguiente código:

from urllib.parse import urlparse

result = urlparse("https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1")
print(type(result),"\n", result)

Para lograr los siguientes resultados:

<clase 'urllib.parse.ParseResult'>
ParseResult (esquema = 'https', netloc = 'voice.baidu.com', path = '/ ACT / newpneumonia / newpneumonia /', params = '', query = 'from = osari_pc_1' , fragmento = '')

Como puede verse, el resultado es un objeto de una clase Parse, que comprende esquema, netloc, trayectoria, params, consulta, fragmento de seis partes. Como puede verse en comparación con el enlace URL original a un formato de URL estándar es la siguiente:

esquema: // netloc / ruta; params consulta # fragmento

Entre ellos, "//" en el esquema frontal en nombre del acuerdo, la primera "/" símbolo delante de un netloc, es decir, nombre de dominio, seguido de la ruta, es decir, el camino de acceso; ";" seguido de params, en nombre del parámetro, seguido de una consulta "?" , del tipo generalmente utilizado URL GET; "#" seguido del ancla para el posicionamiento de la posición pull-down dentro de la página dentro de la página web. La URL se reunirá esta regla general, el uso urlparse () que puede ser dividida abierta.

urllib.parse.ParseResult un tipo ancestral, que puede ser operado por una lista.

2.urlunparse()

A saber urlparse () la operación inversa.

3.urlsplit ()

Y la urlparse () es params similares no resuelven parte separada, en la trayectoria, es decir, una longitud de 5

4.urljoin ()

urljoin ( "base_url", "NEW_URL")

Los dos base_url y NEW_URL url colocan juntos, el principio es base_url sólo tres elementos: esquema, netloc, camino. Si este vínculo no existe en tres años, base_url se utiliza en la reposición automática, existen Ruoguo, se utiliza NEW_URL en el contenido correspondiente. base_url dentro params, consulta, el fragmento no puede permitirse papel Rehe.

5.urlencoden ()

Directamente en uso:

from urllib.parse import urlencode

params = {
    'name':'Merry',
    'age':18
}
base_url = "https://www.baidu.com?"
url = base_url + urlencode(params)
print(url)

La salida es: https://www.baidu.com?name=Merry&age=18  función encode () es el primer diccionario de parámetros en una solicitud GET de parámetros de secuencia.

6.quote ()

from urllib.parse import quote

key = "你好"
url = "www.baidu.com/s?wd=" + quote(key)
print(url)

www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD

Esta función estará contento de pasar formato de codificación URL maquillaje, esta función a resolver el problema de la basura con parámetros de URL chino que puedan causarse. Que es el fin de la cita operación inversa ()

Además, hay urlsplit (), parse_qs), parse_qsl función (() y similares, que no se describe en detalle.

Supongo que te gusta

Origin www.cnblogs.com/shuai3290/p/12563605.html
Recomendado
Clasificación