Python:urllib.request.urlretrieve保存一个空文件。写入“提供的id参数为空”。

时间:2015-01-25 21:30:42

标签: python url download urllib

这是我要下载和保存的文件类型:

http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccore&id=562868704,585641505&rettype=fasta&retmode=text

...这是测试代码:

import urllib.request
import xml.etree.ElementTree as ET
mystring = ' '
link = urllib.request.urlopen('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=protein&db=nuccore&linkname=protein_nuccore_mrna&id=13591999,149050462')
tree = ET.parse(link)
root = tree.getroot()
for branch in root.iter('Link'):
    for something in branch.iter('Id'):
        mystring += something.text + ','
mRNA = urllib.request.urlretrieve('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccore&id=' + mystring + '&rettype=fasta&retmode=text', 'C:/Users/User/Documents/mRNA.fasta')

它创建文件,但然后是空的,我不知道问题是什么。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您生成的网址包含空格;你自己把它放在那里:

mystring = ' '

如果我用空字符串替换它,而代码似乎有效:

mystring = ''

您可以使用列表并使用str.join() method来构建您的值,而不是使用字符串连接:

elements = []
for element in root.findall('.//Link/Id'):
    elements.append(element.text)
mystring = ','.join(elements)

我使用Element.findall() methodXPath expression列出了所有匹配的Id节点。