使用Python来请求网页运行搜索

Unc*_*ick 6 python search web

我有一个"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版本的解决方案.谢谢您的帮助!

jdo*_*dot 6

更容易的方法是使用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)


Sil*_*Ray 4

运行搜索似乎执行了 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 中的蛋白质名称,以便您可以搜索所需的任何蛋白质名称。