python - 将curl转换为urllib python3

标签 python python-3.x urllib python-3.5

我尝试将此 CURL 命令转换为 urllib

curl :

curl -X POST 'http://118.tct.ir/exe/indseane17.pgm' --data 'cmbPro=%CA%E5%D1%C7%E4%0D%0A&pcity=021+++++&lname=%C7%E3%ED%D1%C7%E3%CC%CF%ED&fname=%CD%D3%E4&adrs=&hideme=PZ83M6S2W7'

urllib:

from urllib.request import Request, urlopen
import urllib
data = urllib.parse.urlencode({
     'cmbPro':'%CA%E5%D1%C7%E4%0D%0A',
     'pcity':'021+++++',
     'lname':'%C7%E3%ED%D1%C7%E3%CC%CF%ED',
     'fname':'%CD%D3%E4&adrs=&hideme=PZ83M6S2W7'
     })
data = data.encode('ascii')
q = Request('http://118.tct.ir/exe/indseane17.pgm',data=data)

a = urlopen(q).read()
print(a)

但是我遇到了这个错误:

HTTPError: HTTP Error 404: Not Found

但是当我尝试使用curl 时,它工作得很好。

有什么问题吗?

最佳答案

字符串cmbPro=%CA%E5%D1%C7%E4%0D%0A&pcity=021+++++&lname=%C7%E3%ED%D1%C7%E3%CC%CF%ED&fname =%CD%D3%E4&adrs=&hideme=PZ83M6S2W7 已进行 urlencode 编码,您可以按原样使用它。不存在具有以下内容的 404:

from urllib.request import Request, urlopen
import urllib

data = 'cmbPro=%CA%E5%D1%C7%E4%0D%0A&pcity=021+++++&lname=%C7%E3%ED%D1%C7%E3%CC%CF%ED&fname=%CD%D3%E4&adrs=&hideme=PZ83M6S2W7'
data = data.encode('ascii')
q = Request('http://118.tct.ir/exe/indseane17.pgm', data=data)

a = urlopen(q).read()
print(a)  # <html>...</html>

关于python - 将curl转换为urllib python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41302190/

相关文章:

python - Python 单元测试的执行顺序

python - 在 python 3 中生成 HMAC Sha256

python - 抓取 Flipkart.com 的所有手机

python - 无法使用 Mixin 类扩展 python IntEnum

python - 将中文字符转换为 XML/HTML 样式的数字实体并转换为 Unicode UTF-8?

python - 在 Windows 7x64 上从 Python3.x 调用 Matlab2013

python - 在 Python 3 中为 urllib.request.urlopen 更改用户代理

python-2.7 - 高效读写大型文件

python - 为什么 python 的 urllib2.urlopen 给我一个 403 错误?

c++ - 在 Windows 10 TP 上使用 VS-2015 CTP 5 和 Python 3.5a 编译 boost-python 教程