Python与HTTP服务交互,可以通过http.client requests RissionPage等。
http.client标准库
http.client
是Python标准库中的一个模块,用于发送HTTP请求。这个模块提供了一个低级别的接口,允许你手动构建HTTP请求并处理响应。下面是对 http.client
的详细介绍:
使用方法
使用 http.client
发送HTTP请求通常涉及以下步骤:
-
创建连接 :使用
http.client.HTTPSConnection
或http.client.HTTPConnection
创建一个连接对象。 -
发送请求 :使用连接对象的
request
方法发送请求。你需要指定请求方法(如 'GET'、'POST' 等)、请求的URI、以及可选的请求头和请求体。 -
获取响应 :使用连接对象的
getresponse
方法获取响应对象。这个对象是一个http.client.HTTPResponse
实例,它提供了对响应的访问。 -
读取响应内容 :你可以使用响应对象的
read
方法读取响应体。 -
关闭连接:完成请求和响应处理后,记得关闭连接。
示例代码
下面是一个使用 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