首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python请求网页运行搜索

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

Stack Overflow用户
提问于 2012-12-19 22:02:27
回答 4查看 34.5K关注 0票数 6

我有一个"Uniprot“格式的蛋白质名称列表,我想将它们全部转换为MGI格式。如果您转到www.uniprot.org并在“查询”栏中键入uniprot名称,它将生成一个页面,其中包含有关该蛋白质的大量信息,包括其MGI名称(尽管在页面下更低)。

例如,一个Uniprot名称是"Q9D880",通过向下滚动,您可以看到它相应的MGI名称是"1913775“。

我已经知道如何使用Python的urllib从页面中提取MGI名称。我不知道如何编写Python代码来获得运行"Q9D880“查询的主页。我的列表包含270个蛋白质名称,所以最好避免将每个蛋白质名称复制和粘贴到查询栏中。

我看到了“Python中的谷歌搜索”这篇文章,我对这个概念有了更坚定的理解,但我怀疑运行google搜索与在其他一些网站上运行搜索功能不同,比如uniprot.org。

我正在运行Python2.7.2,但我愿意使用Python的其他版本来实现解决方案。谢谢你的帮助!

EN

回答 4

Stack Overflow用户

发布于 2012-12-19 22:20:21

更简单的方法是使用requests库。我为您提供的解决方案还使用BeautifulSoup4从页面中获取信息本身。

如果给出查询参数的字典,您只需要

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2012-12-19 22:14:03

运行搜索似乎会启动

代码语言:javascript
复制
http://www.uniprot.org/?dataset=uniprot&query=Q9D880&sort=score&url=&lucky=no&random=no

最终将你重定向到

代码语言:javascript
复制
http://www.uniprot.org/uniprot/Q9D880

因此,您应该能够使用urllib或http库(我使用httplib2)对该地址执行GET,参数化URL中的蛋白质名称,以便您可以搜索想要的任何蛋白质名称。

票数 4
EN

Stack Overflow用户

发布于 2012-12-19 22:32:35

您也可以使用PyQuery完成这一任务。

代码语言:javascript
复制
>>> from pyquery import PyQuery as pq    
>>> url = "http://www.uniprot.org/uniprot/{name}"
>>> name = "Q9D880"
>>> response = pq(url=url.format(name=name))
>>> print html("a").filter(lambda e: pq(this).text().startswith("MGI:")).text()
MGI:1913775
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13962006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档