我有一个"Uniprot"格式的蛋白质名称列表,我想将它们全部转换为MGI格式.如果您访问www.uniprot.org并在"查询"栏中输入uniprot蛋白质名称,它将生成一个页面,其中包含有关该蛋白质的大量信息,包括其MGI名称(尽管页面更远).
例如,一个Uniprot名称是"Q9D880",通过向下滚动,您可以看到其对应的MGI名称是"1913775".
我已经知道如何使用Python的urllib在我到达该页面后从页面中提取MGI名称.我不知道该怎么做是编写Python代码以使主页面运行"Q9D880"的查询.我的列表包含270个蛋白质名称,因此最好避免将每个蛋白质名称复制并粘贴到查询栏中.
我看到了"谷歌搜索从Python应用程序"的帖子,我对这个概念有了更深刻的理解,但我怀疑运行谷歌搜索不同于在其他网站上运行搜索功能,如uniprot.org.
我正在运行Python 2.7.2,但我愿意实现使用其他Python版本的解决方案.谢谢您的帮助!
更容易的方法是使用requests
库.我的解决方案还使用BeautifulSoup4从页面中获取信息本身.
所有你必须做的,因为你的查询参数的字典是:
from bs4 import BeautifulSoup as BS
for protein in my_protein_list:
text = requests.get('http://www.uniprot.org/uniprot/' + protein).text
soup = BS(text)
MGI = soup.find(name='a', onclick="UniProt.analytics('DR-lines', 'click', 'DR-MGI');").text
MGI = MGI[4:]
print protein +' - ' + MGI
Run Code Online (Sandbox Code Playgroud)
运行搜索似乎执行了 GET
http://www.uniprot.org/?dataset=uniprot&query=Q9D880&sort=score&url=&lucky=no&random=no
Run Code Online (Sandbox Code Playgroud)
最终将您重定向到
http://www.uniprot.org/uniprot/Q9D880
Run Code Online (Sandbox Code Playgroud)
因此,您应该能够使用urllib
或 http 库(我使用httplib2
)在该地址上执行 GET,参数化 URL 中的蛋白质名称,以便您可以搜索所需的任何蛋白质名称。