Colección de citas famosas - Slogan de motivación - Anidamiento del diccionario de títulos

Anidamiento del diccionario de títulos

Palmeras

Primero, veamos sus diferencias.

Urllib y urllib2

Tanto urllib como urllib2 son módulos relacionados que aceptan solicitudes de URL, pero urllib2 puede aceptar una instancia de la clase de solicitud para establecer el encabezado de la solicitud de URL, mientras que urllib Solo puedo aceptar URL.

Esto significa que no puedes disfrazar la cadena de tu agente de usuario, etc.

Urllib proporciona el método urlencode para obtener la generación de cadenas de consulta, pero urllib2 no. Es por eso que urllib se usa a menudo junto con urllib2.

La mayoría de las tablas actualmente; MSIE 5.5Windows NT)' #Escribe user_agent en la información del encabezado.

valores = {'nombre': 'quién', 'contraseña': '123456'}

encabezados = {'agente-usuario': agente-usuario}

datos = urllib.urlencode(valor)

req = urllib2. request(url, data, title)

respuesta = urllib2.urlopen(req)

_page = respuesta.read()

El valor son los datos posteriores .

Método de obtención

Por ejemplo, Baidu:

De esta manera, necesitamos codificar la URL del diccionario {'wd':' XXX'}.

#Encoding: utf-8

Importar urllib

Importar urllib2

url = ' '

valores = {'wd':'D_in'}

datos = urllib.urlencode(valor)

Imprimir datos

url2 = url '? ' datos

respuesta = urllib2.urlopen(url2)

_page = respuesta.read()

Imprimir página_

Método de cuenta

Importar urllib

Importar urllib2

url = ' '

user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5Windows NT)' //Escribe user_agent en la información del encabezado.

Valores = {'nombre': 'quién', 'contraseña': '123456'}/datos de la publicación

encabezados = {'agente-usuario': agente-usuario }

Datos = urllib. urlencode(values)//Codifica en URL los datos publicados.

req=urllib2. Solicitud (url, datos, título)

respuesta = urllib2.urlopen(req)

_page = respuesta.read()

Uso de urllib2 junto con cookies

#Codificación: utf-8

Importar urllib2, urllib

Importar cookielib

url = r ' '

#Crear un contenedor para la cookie de cj

cj = cookielib.

CookieJar()

opener = URL lib 2. build _ opener(URL lib 2. HTTPCookieProcessor(cj))

#Codificar los datos que se publicarán.

datos = urllib . urlencode({ "correo electrónico": correo electrónico, "contraseña": contraseña})

r = opener.open(url, datos)

Imprimir cj

Uso simple de httplib

Ejemplo simple

#!/usr/bin/env python

# -* - codificación: utf-8 -*-

importar httplib

importar urllib

def enviar http():

datos = urllib. urlencode({ '@número': 12524, '@tipo': 'problema', '@acción': 'mostrar'})

encabezados = { "Tipo de contenido": "aplicación/x" -www-form-urlencoded ",

" Accept": "text/plain"}

conn = httplib. conexión http(' bugs . python . org ')

conn.request('POST', '/', datos, título)

httpres = conn.getresponse() p>

Imprimir httpres.status

Imprimir httpres.reason

Imprimir httpres.read()

if __name__ == '__main__ ':

Enviar http()

Ver el uso detallado.

Módulo Httplib

La biblioteca urllib y la biblioteca urilib2 en Python 3.x se fusionan en la biblioteca urllib. Entre ellos,

Primero, importe el módulo de la siguiente manera

importar urllib

importar urllib2

conviértase en

import urllib.request

Los métodos en urllib2 se utilizan de la siguiente manera.

Urllib2.urlopen() se convierte en urllib.request.urlopen().

Urllib2. Request() se convierte en urllib.request.Request().

Urllib2. URLError se convierte en urllib.error.URLError

Cuando desea utilizar la solicitud de publicación de urllib con datos,

en python2.

urllib.urlencode(data)

En python3, se convierte en

urllib.parse.urlencode(data)

Ejemplo de script uso:

En Python 2

Importar urllib

Importar urllib2

Importar json

Desde la configuración de importación de configuración

def url_request(self, action, url, * * extra_data): ABS_URL = "http://s:s/s" (settings.configs['Servidor'],

settings.configs["ServerPort"],

URL)

si acción en ('get','get'):

print(abs_url, extra_data)

Pruebe:

req = urllib2. Solicitud (abs_url)

req_data = urllib2.urlopen(req, time out = settings . configs[' request time out '])

Devolución de llamada = req_data.read()

# print "->; Respuesta del servidor: ", devolución de llamada

Devolución de llamada

Excepto urllib2. URLError para e:

Salir("\033[31;1ms\033[0m" e "

operación elif en ('post','POST'):

# print(abs_url, extra_data['params'])

Pruebe:

data_encode = urllib . p>req = urllib2.

request(url=abs_url, data=data_encode)

res_data = urllib2.urlopen(req, time out = settings . configs[' request time out '])

callback = res_data. read()

devolución de llamada = json.loads(devolución de llamada)

Imprimir("\033[31;1m[s]:[s]\033[0m respuesta:\ns" (acción, abs_url, devolución de llamada))

Devolver devolución de llamada

La excepción es e:

Imprimir ('- exec ', e)

Salir("\033[31;1ms\033[0m" e "

En python3.x

Importar urllib.request

Importar json

Importar ajustes desde configuración

Definir url_request(self, action, url, * *datos adicionales):

ABS_url = ' http:// s: s/s /' (settings.configs['serverIP'], settings.configs['ServerPort'], URL)

Si operación en ('get', 'Get'): # obtener solicitud

print(action, extra_data) try:

req = URL lib request (ABS_URL)

req _ data = urllib request . = settings . configs[' tiempo de espera de solicitud '])

Devolución de llamada = req_data.read()

Devolución de llamada

Excepto urllib.error.URLError como e :

Salir("\033[31;1ms\033[0m" e"

Operación elif en ('post', 'post '): #Enviar datos al servidor .

Pruebe:

data _ encode = urllib . urlencode(extra _ data[' params '])

req = solicitud de biblioteca de URL. (URL = ABS_URL, data=data_encode)

req_data = urllib request . .read()

Devolución de llamada = json.loads(callback.decode())

Devolución de llamada

Excepto urllib.request.URLError como e:

print('-exec',e)

exit("\033[31;1ms\033[0m" e"

set La configuración es la siguiente :

Configuración = {

'HostID': 2,

"Servidor":"Localhost",

[ Puerto del servidor] : 8000,

" URL ": {

get_configs': ['API/client/config', 'get'], #adquirir todo será un servicio monitoreado

service_report':['API/client/service/report/','post'],

},

'RequestTimeout': 30,

'ConfigUpdateInterval': 300, el valor predeterminado es # 5 minutos

}