Python与HTTP服务交互

Python与HTTP服务交互,可以通过http.client requests RissionPage等。

http.client标准库

http.client 是Python标准库中的一个模块,用于发送HTTP请求。这个模块提供了一个低级别的接口,允许你手动构建HTTP请求并处理响应。下面是对 http.client 的详细介绍:

使用方法

使用 http.client 发送HTTP请求通常涉及以下步骤:

  1. 创建连接 :使用 http.client.HTTPSConnectionhttp.client.HTTPConnection 创建一个连接对象。

  2. 发送请求 :使用连接对象的 request 方法发送请求。你需要指定请求方法(如 'GET'、'POST' 等)、请求的URI、以及可选的请求头和请求体。

  3. 获取响应 :使用连接对象的 getresponse 方法获取响应对象。这个对象是一个 http.client.HTTPResponse 实例,它提供了对响应的访问。

  4. 读取响应内容 :你可以使用响应对象的 read 方法读取响应体。

  5. 关闭连接:完成请求和响应处理后,记得关闭连接。

示例代码

下面是一个使用 http.client 发送GET请求的示例:

python 复制代码
import http.client  
  
# 创建连接  
conn = http.client.HTTPSConnection("www.example.com")  
  
# 发送GET请求  
conn.request("GET", "/")  
  
# 获取响应  
response = conn.getresponse()  
  
# 输出响应状态码和响应体  
print(response.status, response.reason)  
print(response.read())  
  
# 关闭连接  
conn.close()

http.client 提供的是底层的HTTP通信功能,如果你想要更高级的功能,如自动处理重定向、连接池等,你可能需要考虑使用其他库,如 requests

requests

requests库是一个用Python语言编写的HTTP客户端库,基于urllib3模块,采用Apache2 Licensed开源协议。这个库使得发送HTTP请求变得简单且人性化。

安装:

python 复制代码
pip install requests

例子:

python 复制代码
import requests  
  
# 发送GET请求到指定的URL  
response = requests.get('https://www.example.com')  
  
# 输出响应的状态码  
print(response.status_code)  
  
# 输出响应的内容  
print(response.text)

发送post

python 复制代码
import requests  
  
# 发送POST请求到指定的URL,并附带一些数据  
url = 'https://www.example.com/post'  
data = {'key1': 'value1', 'key2': 'value2'}  
response = requests.post(url, data=data)  
  
# 输出响应的状态码和内容  
print(response.status_code)  
print(response.text)

RissionPage

RissionPage 是一个基于 python 的网页自动化工具。

它既能控制浏览器,也能收发数据包,还能把两者合而为一。

可兼顾浏览器自动化的便利性和 requests 的高效率。

它功能强大,内置无数人性化设计和便捷功能。

它的语法简洁而优雅,代码量少,对新手友好。

个人理解,它是一个request的替代品

安装:

bash 复制代码
pip3  install drissionpage

例子:

python 复制代码
from DrissionPage import SessionPage

# 创建页面对象
page = SessionPage()

# 爬取3页
for i in range(1, 4):
    # 访问某一页的网页
    page.get(f'https://gitee.com/explore/all?page={i}')
    # 获取所有开源库<a>元素列表
    links = page.eles('.title project-namespace-path')
    # 遍历所有<a>元素
    for link in links:
        # 打印链接信息
        print(link.text, link.link)

输出信息:

python 复制代码
zan8in/afrog https://gitee.com/zanbin/afrog
xieguigang/Darwinism https://gitee.com/xieguigang/Darwinism
RTE-Dev/RedPlayer https://gitee.com/rte-dev/RedPlayer
panday/chat-master-web https://gitee.com/panday94/chat-master-web
相关推荐
码界筑梦坊1 分钟前
173-基于Flask的微博舆情数据分析系统
后端·python·数据分析·flask·毕业设计
炸膛坦客7 分钟前
C++ 学习与 CLion 使用:(四)常量和变量,包括字面常量和符号常量
开发语言·c++·学习
java1234_小锋37 分钟前
说说你对Integer缓存的理解?
java·开发语言
至此流年莫相忘1 小时前
TypeReference 泛型的使用场景及具体使用流程
java·开发语言·spring boot
nightunderblackcat1 小时前
新手向:异步编程入门asyncio最佳实践
前端·数据库·python
weixin_448617051 小时前
疏老师-python训练营-Day54Inception网络及其思考
python
windSnowLi1 小时前
Python opencv识别图片中重叠圆的圆心位置
开发语言·python·opencv
XXD啊2 小时前
Redis 从入门到实践:Python操作指南与核心概念解析
数据库·redis·python
lingggggaaaa3 小时前
小迪安全v2023学习笔记(七十讲)—— Python安全&SSTI模板注入&项目工具
笔记·python·学习·安全·web安全·网络安全·ssti
王廷胡_白嫖帝3 小时前
Qt网络速度测试工具开发教程 - 从零开始构建网络测速应用
开发语言·网络·qt