将curl转换为urllib python3

时间:2016-12-23 13:14:56

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

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

卷曲:

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时它只是运作得很好。

有什么问题?

1 个答案:

答案 0 :(得分:1)

字符串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已经过urlencoded,您可以按原样使用它。没有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>