【问题标题】:Create a list of multiple URLs in Python from a list in CSV从 CSV 中的列表创建 Python 中的多个 URL 列表
【发布时间】:2018-07-27 19:28:06
【问题描述】:

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

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

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

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

非常感谢任何帮助。

【问题讨论】:

  • 本网站不是编码服务,请自行尝试,当您遇到特定问题时,请随时在这里提问。
  • 如果您需要 web-suck,只需使用多光标编辑器将 CVS 文件修改为所需的 URL,然后使用 wget 或 curl 将它们全部获取。或者在编辑器中使用正则表达式将 CVS 中的每一行转换为所需的 URL

标签: python list csv python-requests


【解决方案1】:

要读取 .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 列表并根据需要使用请求库。

这不是最紧凑的处理方式,但它很实用,并且将步骤分开以便于查看。

【讨论】:

    【解决方案2】:

    你可以用一个方法概括 url 创建:

    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 加快请求速度。

    【讨论】:

      【解决方案3】:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-02
        • 2013-08-15
        • 2012-09-18
        • 1970-01-01
        • 1970-01-01
        • 2018-12-31
        • 2020-04-28
        • 2022-06-27
        相关资源
        最近更新 更多