一、安装 httpx是Python新一代的网络请求库 httpx与 requests 库的基本使用方法几乎是一模一样的 基于Python3的功能齐全的http请求模块 既能发送同步请求,也能发送异步请求 支持HTTP/1.1和HTTP/2 支持直接向WSGI应用程序或者ASGI应用程序发送请求
httpx.get('https://www.baidu.com')
httpx.post('https://www.baidu.com')
httpx.put('https://www.baidu.com')
httpx.delete('https://www.baidu.com')
httpx.head('https://www.baidu.com')
httpx.options('https://www.baidu.com')
-----------------------------------
©著作权归作者所有:来自51CTO博客作者autofelix的原创作品,否则将追究法律责任
python 包之 httpx 请求操作教程
https://blog.51cto.com/autofelix/5188556复制代码 三、带参数请求 data = { 'name': 'autofelix', 'age': 25 } response = httpx.get('https://www.baidu.com', params=data) print(response.url) print(response.text)复制代码 四、自定义 headers headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
}
response =httpx.get('https://www.baidu.com', headers=headers)
print(response.text)复制代码 五、请求的属性 response = httpx.get('https://www.baidu.com') # 响应状态码 response.status_code # 响应头 response.headers # 响应cookie response.cookies # 请求url response.url # 历史记录 response.history复制代码 六、使用client发送请求 with httpx.Client() as client:
response = client.get('https://www.baidu.com')
print(response.text)复制代码 七、HTTP代理 proxies= { 'http': 'http://127.0.0.1:9999', 'https': 'http://127.0.0.1:8888' } with httpx.Client(proxies=proxies) as client: response = client.get('https://www.baidu.com') print(response)复制代码 八、超时处理 # 普通请求超时处理
httpx.get('https://www.baidu.com', timeout=10.0)
# 普通请求关闭超时处理
httpx.get('https://www.baidu.com', timeout=None)
# client实例超时处理
with httpx.Client() as client:
client.get('https://www.baidu.com', timeout=None)
# client实例关闭超时处理
with httpx.Client() as client:
client.get('https://www.baidu.com', timeout=10.0)复制代码 九、SSL验证 # 自带ca证书 response = httpx.get('https://www.baidu.com', verify='path/cert/client.pem') # 完全禁用SSL验证 response = httpx.get('https://www.baidu.com', verify=False)复制代码 十、异步操作 使用async/await语句来进行异步操作 使用异步client比使用多线程发送请求更加高效,更能体现明显的性能优势 import httpx
async def main():
async with httpx.AsyncClient() as client:
response = await client.get('https://www.baidu.com')
print(response)
if __name__ == '__main__':
asyncio.run(main())复制代码 |
|