在“urllib.request.urlopen”中使用变量会引发错误

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

我想使用 python3 从 NCBI 网站获取数据。当我使用

fp = urllib.request.urlopen("https://www.ncbi.nlm.nih.gov/gene/?term=50964")     
mybytes = fp.read()
mystr = mybytes.decode("utf8")
fp.close()
print(mystr) #### executes without any error

但是当我将 id 作为 url 中的变量传递时,它会抛出错误。

id_pool=[50964, 4552,7845,987,796]

for  id in id_pool:
   id=str(id) 

   url=f'"https://www.ncbi.nlm.nih.gov/gene/?term={id}"'

   print(url) ## "https://www.ncbi.nlm.nih.gov/gene/?term=50964" ### same as above

   fp = urllib.request.urlopen(url)

   mybytes = fp.read()

   mystr = mybytes.decode("utf8")

   fp.close()

   print(mystr) #### shows the following error

   break


"    raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: "https>"
python url urllib urllib3
2个回答
1
投票

url
中有错字,我已经为您更正了:

url = f'https://www.ncbi.nlm.nih.gov/gene/?term={id}'

看起来你把它附上了两次。我能够检索输出:


1
投票

因为你在 url 周围有多余的双引号 (

"
)

f'"https://www.ncbi.nlm.nih.gov/gene/?term={id}"'

字符串变成了

"https://www.ncbi.nlm.nih.gov/gene/?term={id}"
而不是
https://www.ncbi.nlm.nih.gov/gene/?term={id}
。 删除它们,代码将正常工作

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