通过CSV列表在Python中创建多个URL的列表

时间:2018-07-27 19:28:07

标签: python list csv python-requests

我有一个335个基因访问号的csv列表,我想将它们全部放入特定的URL:

https://www.ncbi.nlm.nih.gov/nuccore/DQ147858.1?report=fasta

每个URL的8字母基因访问号(上面的DQ147858)与相应的csv列表不同。

然后我还需要知道如何使用请求访问所有生成的URL。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您可以使用以下方法来概括网址的创建:

def build_url(gene):
    return 'https://www.ncbi.nlm.nih.gov/nuccore/' + gene + '.1?report=fasta'

然后,要为每个gene进行构建,您可以遍历初始列表并为每个基因应用函数build_url

# Generic extraction of list genes from csv
genes = extract_list(csv)

# Using list comprehension
genes_urls = [build_url(gene) for gene in genes]

# Using regular for
genes_urls = []
for gene in genes:
    genes_urls.append(build_url(gene))

按照此answer进行请求,您只需执行以下操作:

import requests

# Using list comprehension
res = [requests.get(url) for url in genes_urls]

# Using regular for
res = []
for url in genes_urls:
    res.append(requests.get(url))

此外,您可以use multithreading加快请求的速度。

答案 1 :(得分:0)

csv = open('PATH_TO_CSV', 'r') for gene_number in csv.readlines().split(','): URL = 'https://www.ncbi.nlm.nih.gov/nuccore/' + gene_number + '.1?report=fasta' // request parsing here

答案 2 :(得分:0)

要读取.csv,请使用以下代码:

result = []
for line in open("file.csv"):
    result.append(line.split(','))

这将为您提供逗号之间每个元素的列表。我不知道您需要哪个se元素,但是请看一下result[0]来了解您需要哪个索引。

有了您需要的索引,

fmtstr  = "https://www.ncbi.nlm.nih.gov/nuccore/{}?report=fasta"
urls = []
for lst in result:
    urls.append(fmtstr.format( lst[desired_index] ))

然后,您可以遍历URL列表并根据需要使用请求库。

这不是最紧凑的处理方式,但是它是功能性的,并且将步骤分开以简化查看。