Python 3中的urlib使用

2024-04-25 07:05:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到以下错误:

TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.

打下面的电话时

import urllib.request, urllib.parse, urllib.error, urllib.request, 
urllib.error, urllib.parse
import json

chemcalcURL = 'http://www.chemcalc.org/chemcalc/em'

# Define a molecular formula string
mfRange = 'C0-100H0-100N0-10O0-10'
# target mass
mass = 300

# Define the parameters and send them to Chemcalc
# other options (mass tolerance, unsaturation, etc.
params = {'mfRange': mfRange,'monoisotopicMass': mass}


response = urllib.request.urlopen(chemcalcURL, urllib.parse.urlencode(params))

# Read the output and convert it from JSON into a Python dictionary
jsondata = response.read()
data = json.loads(jsondata)

print(data)

Tags: ofimportjsondatabytesparserequesterror
1条回答
网友
1楼 · 发布于 2024-04-25 07:05:36

您必须将请求转换为涉及使用bytes()参数的字节:

response = urllib.request.urlopen(chemcalcURL, bytes(urllib.parse.urlencode(params), encoding="utf-8")

bytes()必须采用一种编码,对于网站来说,这种编码几乎总是utf-8。你知道吗

相关问题 更多 >