【问题标题】:Any advice for sending a request to a website from Python?从 Python 向网站发送请求有什么建议吗?
【发布时间】:2013-12-22 01:11:05
【问题描述】:
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 运行它之间的区别。你们中有人知道可能出了什么问题吗?

谢谢你:-) ~最大

【问题讨论】:

    标签: python html css urllib2 bioinformatics


    【解决方案1】:

    我认为这是在 javascript 中。如果您查看按钮Align 的html-code,您可以看到

    onclick="UniProt.analytics('AlignmentSubmissionPage', 'click', 'Submit align'); submitAlignForm();"
    

    UniProt.analytics()submitAlignForm() 一些 JavaScript 魔法。 js-compr.js2013_11 文件中的这个魔法。

    您可以使用http://jsbeautifier.org/ 查看此文件,然后在 python 上执行 javascript 的操作。

    【讨论】:

      【解决方案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()
      

      【讨论】:

        猜你喜欢
        • 2015-09-20
        • 1970-01-01
        • 2023-03-14
        • 2020-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        相关资源
        最近更新 更多