You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3使用变量拼接URL调用urllib.request.urlopen报错

问题解决:Python拼接NCBI URL报错unknown url type: "https"

错误原因

你在构造URL的f-string里多添加了双引号,导致最终传递给urllib.request.urlopen()的URL字符串包含了实际的双引号字符(比如"https://www.ncbi.nlm.nih.gov/gene/?term=50964")。urlopen会把开头的"https识别成未知的URL协议,因此抛出URLError。

直接写死URL时,"https://..."里的双引号是Python的字符串界定符,实际传递给函数的是引号内部的纯URL内容;而用f-string时你把双引号也放进了字符串里,这是完全多余的。

修正后的代码

import urllib.request

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

for gene_id in id_pool:
    # 直接拼接URL,不要加额外的双引号
    url = f'https://www.ncbi.nlm.nih.gov/gene/?term={gene_id}'
    print(url)
    
    fp = urllib.request.urlopen(url)
    mybytes = fp.read()
    mystr = mybytes.decode("utf8")
    fp.close()
    print(mystr)
    break

额外建议

直接爬取NCBI网页可能会触发反爬机制,而且网页结构变化会导致后续解析失效。NCBI官方提供了专门的Entrez编程接口,推荐使用biopython库的Entrez模块来获取基因数据,更稳定合规。

内容的提问来源于stack exchange,提问作者shivam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:01:01