aprendizaje del rastreador de Python 25

aprendizaje del rastreador de Python 25

Cuarto, biblioteca httpx

Luego continuó el progreso de ayer:

Portal en la mitad superior

4-4 objeto cliente

Hay un objeto de cliente en httpx, para su uso, podemos analogizar la sesión en la biblioteca de solicitudes:

# client 对象
import httpx

with httpx.Client() as cli:
    resp = cli.get('https://www.httpbin.org/get')
    print(resp)

resultado de la operación:

inserte la descripción de la imagen aquí

El uso oficial recomendado para el cliente es la declaración with...as, pero también podemos ser equivalentes a lo siguiente:

# 等价为 ↓↓↓↓↓
import httpx

client = httpx.Client()
try:
    resp = client.get('https://www.httpbin.org/get')
    print(resp)
finally:
    client.close()

resultado de la operación:

inserte la descripción de la imagen aquí

Al mismo tiempo, al configurar el objeto del cliente, también puede especificar algunos parámetros:

import httpx

url = 'http://www.httpbin.org/get'
headers = {
    
    'User-Agent': 'this is a user-agent'}
with httpx.Client(headers=headers) as client:
    resp = client.get(url)
    print(resp.json()['headers']['User-Agent'])

De la respuesta devuelta por el sitio web, extraemos el campo User-Agent establecido, lo que indica que asignamos correctamente la propiedad de los encabezados:

inserte la descripción de la imagen aquí

4-5 Soporte HTTP/2.0

Para el soporte de httpx para http/2.0, lo hemos cubierto en 4-3:

import httpx

# 如果不设置http2字段 httpx库默认不会支持http2.0
client = httpx.Client(http2=True)
url1 = 'http://www.httpbin.org/get'
url2 = 'https://spa16.scrape.center/'
resp1 = client.get(url2)
print('resp1:', resp1.http_version)
resp2 = client.get(url1)
print('resp2:', resp2.http_version)
resp3 = httpx.get(url1)
print('resp3:', resp3.http_version)

resultado de la operación:

inserte la descripción de la imagen aquí

Al comparar los tres conjuntos de resultados anteriores, también podemos sacar una conclusión: después de configurar HTTP2.0, solo cuando el cliente del lado del servidor solicite usar HTTP2.0, utilizará HTTP2.0 para la transmisión; de lo contrario, en general (el la página web usa HTTP1 .1 puede obtener el correspondiente) Incluso si se ha configurado el soporte para 2.0, seguirá usando HTTP1.1 para la transmisión.

4-6 Solicitud asincrónica de soporte

httpx también admite solicitudes de clientes asíncronos, lo que admite el modo de solicitud asíncrona de python:

# 支持异步请求:

import httpx
import asyncio

async def fetch(url):
    async with httpx.AsyncClient(http2=True) as cli:
        resp = await cli.get(url)
        print(resp.text)
if __name__ == '__main__':
    asyncio.get_event_loop().run_until_complete(fetch('http://www.httpbin.org/get'))

resultado de la operación:

inserte la descripción de la imagen aquí

¿Qué es una solicitud asíncrona? No sé, tal vez lo sepas cuando aprendas allí.

Hasta ahora, el aprendizaje de httpx está completo y aún no ha terminado.

Supongo que te gusta

Origin blog.csdn.net/szshiquan/article/details/123881699
Recomendado
Clasificación