首页 > 解决方案 > 从网站生成和下载 tsv(使用 python)

问题描述

我有这个网站,想写一个脚本,它可以执行一个代码,它提供与单击“导出”->“生成 tsv”->“等待生成”->“下载”相同的输出。最终目标是将其用于大约列表。我在 .txt 中拥有的 1700 种蛋白质(因此提取一种蛋白质,在本例中为“Q9BXF6”并将其放入网址中:https ://www.ebi.ac.uk/interpro/protein/UniProt/Q9BXF6/entry/InterPro /#table ) 并将所有结果下载到 .tsv 文件中。

我尝试检查“导出”按钮,但源代码没有显示(或者我不知道在哪里看)。我也试过这个:

r = requests.get('https://www.ebi.ac.uk/interpro/protein/UniProt/Q9BXF6/entry/InterPro/#table')
soup = BeautifulSoup(r.content, 'html.parser')

找到我需要的东西,但它会输出一堆我无法理解的字符。我还尝试下载整个页面,就像使用 urllib 库一样:

myurl = 'https://www.ebi.ac.uk/interpro/protein/UniProt/Q9BXF6/entry/InterPro/#table'
urllib.request.urlopen() as f:
          html = f.read().decode('utf-8')

或者

urllib.urlretrieve (myurl, 'interpro.txt') # although this didn't work

似乎所有内容都写在其他地方并被引用,并且我尝试过的所有内容都输出了一些愚蠢的东西,但我对 html 一无所知,并且对 python 真的很陌生(我只使用 R)。

标签: pythonhtmlparsingwebdownload

解决方案


对于您的第一个问题,您可以使用URL以下元素的 来检索下一个问题所需的蛋白质值。

href="blob:https://www.ebi.ac.uk/806960aa-720c-4958-9392-f242adee627b"

URL设置为标签,然后href您可以使用它来发出下载文件的请求。您也可以通过右键单击下载按钮来获取它,TSV然后单击Inspect-Element您将能够看到此href标签的存在。

之后,通过例如下载

import urllib.request

url = 'https://www.ebi.ac.uk/806960aa-720c-4958-9392-f242adee627b'
urllib.request.urlretrieve(url, '/Users/abc/Downloads/file.tsv') # any dir to save

with open("/Users/abc/Downloads/file.tsv") as file_in:
    for line in file_in:
        #here make your calls for your second problem.

你也可以使用Web-Automatorselenium 来优雅地解决这个问题。如果后者感兴趣,请调查一下——这并不难。


推荐阅读