专业编程基础技术教程

网站首页 > 基础教程 正文

失业程序员复习python笔记——网络请求(urllib)

ccvgpt 2025-05-26 14:01:47 基础教程 15 ℃

urllib是python内置的http客户端库,用于网络请求相关的主要是urllib.request子模块。

GET请求

from urllib import request

# 发送GET请求并获取响应
response = request.urlopen('http://httpbin.org/get')

# 读取响应内容
html = response.read().decode('utf-8')
print(html)

#输出
{
"args": {},
"headers": {
"Accept-Encoding": "identity",
"Host": "httpbin.org",
"User-Agent": "Python-urllib/3.8",
"X-Amzn-Trace-Id": "Root=1-6820512b-44adb7d37a1f15233ad07016"
},
"origin": "6x.xxx.xx.xx",
"url": "http://httpbin.org/get"
}

执行完上面的代码后,就可以获取响应内容。这个操作跟在浏览器地址栏中输入http://httpbin.org/get后所获得的内容是一样的。

失业程序员复习python笔记——网络请求(urllib)

带参数的GET请求

from urllib.request import urlopen
from urllib.parse import urlencode

# 构造请求参数
params = {
 'key1': 'value1',
 'key2': 'value2'
}
query_string = urlencode(params)
url = f'http://httpbin.org/get?{query_string}'

# 发送请求
response = urlopen(url)
print(response.read().decode('utf-8'))

#输出
{
"args": {
"key1": "value1",
"key2": "value2"
},
"headers": {
"Accept-Encoding": "identity",
"Host": "httpbin.org",
"User-Agent": "Python-urllib/3.8",
"X-Amzn-Trace-Id": "Root=1-682055ee-328a6e591c9952ba3ff32a6a"
},
"origin": "6x.xxx.xx.xx",
"url": "http://httpbin.org/get?key1=value1&key2=value2"
}

这个例子展示了带参数的http get请求。其中用到的urllib.parse是urllib用于解析URL的子模块,对url参数进行encode,再对输出内容进行decode。


post请求


from urllib.request import urlopen, Request
from urllib.parse import urlencode

# 准备POST数据
data = urlencode({
 'username': 'admin',
 'password': 'secret'
}).encode('utf-8')

# 创建请求对象
req = Request('http://httpbin.org/post', data=data)

# 发送POST请求
response = urlopen(req)
print(response.read().decode('utf-8'))

#输出
{
"args": {},
"data": "",
"files": {},
"form": {
"password": "secret",
"username": "admin"
},
"headers": {
"Accept-Encoding": "identity",
"Content-Length": "30",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "Python-urllib/3.8",
"X-Amzn-Trace-Id": "Root=1-682058db-6068492d07a634eb50a5bfde"
},
"json": null,
"origin": "6x.xxx.xx.xx",
"url": "http://httpbin.org/post"
}

这个例子展示了http post请求,通过模拟http post请求的链接http://httpbin.org/post,得到的返回结果中可以看到post时传入的数据。


总结

今天展示了用urllib库进行http get和post请求的例子

Tags:

最近发表
标签列表