solicita biblioteca biblioteca de terceros
1. Enviar solicitud GET / POST
import requests
# 添加headers 和 查询参数 信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
}
url = 'https://www.baidu.com/'
kw = {'wd': '中国'}
response = requests.get(url, headers=headers, params=kw)
print(response)
#查询响应内容
# print(response.text) #返回Unicode格式数据
#
# print(response.content) #返回字节流数据
# print(response.content.decode('utf-8')) #产生乱码时
print(response.url)
print(response.encoding) #响应字符编码
Tenga en cuenta la diferencia entre contenido y texto,
response.text devuelve datos en formato Unicode
response.content devuelve datos de flujo de bytes, cuando hay un código confuso, debe usar decode () para decodificar
2. Agente de poderes
El uso de IP de proxy se introdujo anteriormente en la introducción de la biblioteca urllib. El principio de proxy en las solicitudes es el mismo. La diferencia de uso es que la biblioteca de solicitudes es más concisa y conveniente. Coloque el proxy directamente en el atributo proxies del método de solicitud. Si, como sigue:
import requests
url = 'http://httpbin.org/ip'
proxy = {
'http': '123.160.68.74:9999'
}
resp = requests.get(url, proxies=proxy)
print(resp.text)
3. Cookie
Si una respuesta contiene cookies, puede utilizar el atributo cookies para obtener el valor de la cookie de retorno.
3.1 Uso de cookies para lograr un inicio de sesión simulado
import requests
# resp = requests.get('https://www.baidu.com/')
# print(resp.cookies)
# print(resp.cookies.get_dict())
url = 'https://www.zhihu.com/hot'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36',
'cookie': '_zap=9cb16e80-2e5a-442a-ad83-8c4e56151274; d_c0="AHBUkeFrFhGPThKJGfZWuvXPYdeDQlxWqI4=|1586342451"; _xsrf=KGrwON9rdqf1Va6QrWyiLwNOTRoK5SPY; _ga=GA1.2.925220024.1595327992; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1595327992,1595330061,1595376694; capsion_ticket="2|1:0|10:1599905310|14:capsion_ticket|44:NzhiNDdjZDFjNjBiNDAxOThhNWI3ODQ0MDJhMGQxZGU=|c18f9b858f5a3b1953d240092ab6d1be2fcdd60cb4ca8bdcb531a2161f93fb1b"; z_c0="2|1:0|10:1599905438|4:z_c0|92:Mi4xbkV5a0JRQUFBQUFBY0ZTUjRXc1dFU2NBQUFDRUFsVk5uaXVFWHdEQXZmUFJ5Y0x4WC1ySS1wQ0dYQnl5ZHh3RVhB|29705d2526c129e3642b869de321e6f086c38b17aa2c1285a131192d2de3477b"; tst=h; tshl=; q_c1=1de7075e7f0448aeb62af8961806c2f1|1599916711000|1588725781000; KLBRSID=2177cbf908056c6654e972f5ddc96dc2|1599917151|1599915145'
}
resp = requests.get(url, headers=headers)
print(resp.text)
3.2 Sesión, realizar cookie compartida
import requests
post_url = 'https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fwww.meishij.net%2F'
post_data = {
'username':'[email protected]',
'password':'wq15290884759.'
}
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
# 登录
session = requests.session()
session.post(post_url,headers=headers,data=post_data)
#访问个人网页
url = 'https://i.meishi.cc/cook.php?id=13686422'
resp = session.get(url)
print(resp.text)
4. Manejo de certificados SSL que no son de confianza
4.1 certificado SSL
Un certificado SSL es un tipo de certificado digital , similar a una copia electrónica de una licencia de conducir, pasaporte y licencia comercial. Debido a que está configurado en el servidor, también se denomina certificado de servidor SSL.
El certificado SSL es para cumplir con el protocolo SSL, emitido por una autoridad certificadora digital confiable CA, después de verificar la identidad del servidor, con verificación de identidad del servidor y funciones de encriptación de transmisión de datos.
https://baike.baidu.com/item/SSL%E8%AF%81%E4%B9%A6/5201468?fr=aladdin
Si la solicitud SSL no es de confianza, se producirá un error: como el siguiente error de solicitud
import requests
url = 'https://inv-veri.chinatax.gov.cn/'
resp = requests.get(url)
print(resp.text)
Por lo tanto, después de agregar el valor del atributo de verificación para esta situación, se puede acceder normalmente.
import requests
url = 'https://inv-veri.chinatax.gov.cn/'
resp = requests.get(url, verify=False)
print(resp.text)