urllib.request解锁关键词
时间: 2025-04-26 16:18:42 浏览: 24
### 使用 `urllib.request` 进行高级操作
#### 发送带参数的 HTTP 请求
为了向服务器发送带有查询字符串或其他数据类型的请求,可以构建更复杂的请求对象。这通常涉及创建一个 `Request` 对象并设置自定义头信息。
```python
from urllib import request, parse
data = {'key1': 'value1', 'key2': 'value2'}
query_string = parse.urlencode(data)
url = f"http://example.com/?{query_string}"
req = request.Request(url, headers={
"User-Agent": "Mozilla/5.0"
})
response = request.urlopen(req).read()
print(response.decode('utf-8'))
```
此代码片段展示了如何通过 URL 参数传递键值对给目标网站[^1]。
#### 处理 POST 请求
对于需要提交表单数据的情况,则应使用 POST 方法来发送这些数据到指定位置:
```python
import json
from urllib import request, parse
payload = {"username": "test", "password": "secret"}
json_payload = json.dumps(payload).encode('utf-8')
req = request.Request(
url="http://api.example.com/login",
data=json_payload,
method='POST',
headers={'Content-Type': 'application/json'}
)
with request.urlopen(req) as resp:
result = resp.read().decode('utf-8')
print(result)
```
这段脚本说明了怎样利用 JSON 编码的数据体执行 POST 请求,并处理返回的结果[^2]。
#### 解析和构造 URL 地址
当涉及到复杂链接结构时,解析现有网址或将多个部分组合成新的有效路径变得非常重要。Python 提供了一个方便的方法来做这件事——即 `urllib.parse` 中的功能函数。
```python
from urllib.parse import urlparse, urlunparse
parsed_url = urlparse("https://www.google.com/search?q=test&hl=en")
scheme, netloc, path, params, query, fragment = parsed_url[:]
new_query = dict(parse_qsl(query))
new_query.update({'q': 'advanced search'})
final_url = urlunparse((
scheme,
netloc,
path,
'',
urlencode(new_query),
''
))
print(final_url)
```
上述例子解释了如何修改已有的查询参数以形成一个新的搜索请求URL[^3]。
阅读全文
相关推荐










