def align_sequences(IDs):
import webbrowser
import urllib,urllib2
url = 'http://www.uniprot.org/align/'
params = {'query':IDs}
data = urllib.urlencode(params)
request = urllib2.Request(url, data)
response = urllib2.urlopen(request)
job_url = response.geturl()
webbrowser.open(job_url)
align_sequences('Q4PRD1 Q7LZ61')
使用此功能,我想打开“http://www.uniprot.org/align/”,请求ID Q4PRD1和Q7LZ61的蛋白质序列对齐,然后在浏览器中打开网站。
最初似乎工作正常 - 运行脚本将打开网站并显示正在运行的对齐作业。但是,即使我刷新页面,它也会永远持续下去并且永远不会完成。如果我在浏览器中输入ID并点击“对齐”,它就可以正常工作,大约需要8秒才能对齐。
我不熟悉直接从浏览器运行和从Python运行它之间的区别。你们中的任何人都知道可能出现的问题吗?
谢谢:-) 〜最大
答案 0 :(得分:2)
您必须点击align
按钮。但是,您无法使用webbrowser
执行此操作。一种选择是使用selenium:
from selenium import webdriver
url = 'http://www.uniprot.org/align/'
ids = 'Q4PRD1 Q7LZ61'
driver = webdriver.Firefox()
driver.get(url)
q = driver.find_element_by_id('alignQuery')
q.send_keys(ids)
btn = driver.find_element_by_id("sequence-align-submit")
btn.click()
答案 1 :(得分:1)
我认为这是在javascript中。如果你查看按钮Align
的html代码,你可以看到
onclick="UniProt.analytics('AlignmentSubmissionPage', 'click', 'Submit align'); submitAlignForm();"
UniProt.analytics()
和submitAlignForm()
一些javascript魔法。 js-compr.js2013_11
文件中的这个魔法。
您可以使用http://jsbeautifier.org/查看此文件,然后在python上查看javascript。