用Python的urllib复制wget命令?

问题描述 投票:0回答:2

我正在尝试在我的 Python 程序中使用 Web API,但我不知道如何操作。

这是在 Bash/Unix 中使用命令行进行调用的示例:

wget --post-file="example.txt" "http://example.com/api" -O output_filename

如何使用 Python 的

urllib
模块复制此功能?我正在阅读该模块的文档,但不太确定如何向带有附加文件的网站发送 POST 请求。任何帮助或建议将不胜感激。

几年前我发现了一个问题的this答案,它似乎正在做一些与我想做的事情类似的事情,但当我尝试复制它时,我似乎没有得到想要的结果:

from urllib import request, parse
data = parse.urlencode('example.txt').encode()
req =  request.Request('http://example.com/api', data=data) 
resp = request.urlopen(req)
python http
2个回答
0
投票

我强烈建议使用 requests 包而不是

urllib

提出

POST
请求就像这样简单:

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("https://httpbin.org/post", data=payload)
print(r.text)

输出:

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "key1": "value1", 
    "key2": "value2"
  }, 

0
投票

请注意,一些旧服务器需要特定编码。我必须添加这个,有效负载是一个多行 xml 字符串(用“””括起来):

payload = Payload.encode('Windows-1252')

© www.soinside.com 2019 - 2024. All rights reserved.