【问题标题】:Using python3.0 and above to enter a string into a text box and getting the results from a website使用python3.0及以上在文本框中输入字符串并从网站获取结果
【发布时间】:2013-07-26 21:23:25
【问题描述】:

网站的HTML如下

<html>
<head>
<title>FAS-ESS web server</title>
</head>

<body>
<body bgcolor="#00336677" link="#FFFF00" vlink="#00FFFF" alink="#00FF00" text="#FFFFFF">
<h1><center>FAS-ESS web server</center></h1>
<p><center>(provided by the <a href="http://genes.mit.edu/burgelab/">Burge Lab</a>)        </center></p>

<form action="http://genes.mit.edu/cgi-bin/fas-ess.pl" method="post">
<input type="radio" name="set" value="FAS-hex2" checked>FAS-hex2
(<a href="fas-hex2.txt">set</a>)<br />
<input type="radio" name="set" value="FAS-hex3">FAS-hex3
(<a href="fas-hex3.txt">set</a>)

<p>Sequence(s):<br />
<textarea name="sequence" rows="12" cols="72"></textarea><br />
<input type="reset" value="Clear">
<input type="submit" value="Submit">
</p>
</form>

<p>Notes:</p>
<ul>
<li>You can enter a single sequence or multiple sequences in FASTA format.</li>
<li>Non-letters will be removed from sequences.</li>
<li>Lowercase letters will be converted to uppercase.</li>
<li>T and U are considered the same.</li>
</ul>

<p>Reference:<br />
Wang, Z., Rolish, M. E., Yeo, G., Tung, V., Mawson, M. and
Burge, C. B. (2004). Systematic identification and analysis of exonic
splicing silencers. <i>Cell</i> <b>119</b>, 831-845.</p>

<p>Please send feedback to Mike Rolish (merolish at mit dot edu).</p>

<p><a href="http://genes.mit.edu/burgelab/">Burge Lab home</a></p>
</body>
</html>

这是我的python代码:

import os
import sys
import urllib
import urllib.parse
import urllib.request


site = "http://genes.mit.edu/fas-ess/"
def getinfo(info):
    form_data = {'sequence':info}
    params = urllib.parse.urlencode(form_data)
    request = urllib.request.Request(site,bytes(params,encoding='UTF-8'))
    response = urllib.request.urlopen(request)
    print (response.read().decode('utf-8'))


if __name__ == "__main__":
    info = '>NM_000015\nATGGACATTGAAGCATATTTTGAAAGAATTGGCTATAAGAACTCTAGGAACAAATTGGACTTGGAAACATTAACTGACATTCTTGAGCACCAGATCCGGGCTGTTCCCTTTGAGAACCTTAACATGCATTGTGGGCAAGCCATGGAGTTGGGCTTAGAGGCTATTTTTGATCACATTGTAAGAAGAAACCGGGGTGGGTGGTGTCTCCAGGTCAATCAACTTCTGTACTGGGCTCTGACCACAATCGGTTTTCAGACCACAATGTTAGGAGGGTATTTTTACATCCCTCCAGTTAACAAATACAGCACTGGCATGGTTCACCTTCTCCTGCAGGTGACCATTGACGGCAGGAATTACATTGTCGATGCTGGGTCTGGAAGCTCCTCCCAGATGTGGCAGCCTCTAGAATTAATTTCTGGGAAGGATCAGCCTCAGGTGCCTTGCATTTTCTGCTTGACAGAAGAGAGAGGAATCTGGTACCTGGACCAAATCAGGAGAGAGCAGTATATTACAAACAAAGAATTTCTTAATTCTCATCTCCTGCCAAAGAAGAAACACCAAAAAATATACTTATTTACGCTTGAACCTCGAACAATTGAAGATTTTGAGTCTATGAATACATACCTGCAGACGTCTCCAACATCTTCATTTATAACCACATCATTTTGTTCCTTGCAGACCCCAGAAGGGGTTTACTGTTTGGTGGGCTTCATCCTCACCTATAGAAAATTCAATTATAAAGACAATACAGATCTGGTCGAGTTTAAAACTCTCACTGAGGAAGAGGTTGAAGAAGTGCTGAGAAATATATTTAAGATTTCCTTGGGGAGAAATCTCGTGCCCAAACCTGGTGATGGATCCCTTACTATTTAG'
    getinfo(info)

完整解释:

我要做的是将给定的字符串输入网站,提交,然后抓取结果页面。我尝试使用 3.0 之前的 python 和 urllib2 翻译另一个尝试此操作的线程,但我得到的唯一回报是原始网站 html。

感谢您的观看。

我会邀请您试用该网站:
http://genes.mit.edu/fas-ess/

用这个查询

">NM_000015 ATGGACATTGAAGCATATTTTGAAAGAATTGGCTATAAGAACTCTAGGAACAAATTGGACTTGGAAACATTAACTGACATTCTTGAGCACCAGATCCGGGCTGTTCCCTTTGAGAACCTTAACATGCATTGTGGGCAAGCCATGGAGTTGGGCTTAGAGGCTATTTTTGATCACATTGTAAGAAGAAACCGGGGTGGGTGGTGTCTCCAGGTCAATCAACTTCTGTACTGGGCTCTGACCACAATCGGTTTTCAGACCACAATGTTAGGAGGGTATTTTTACATCCCTCCAGTTAACAAATACAGCACTGGCATGGTTCACCTTCTCCTGCAGGTGACCATTGACGGCAGGAATTACATTGTCGATGCTGGGTCTGGAAGCTCCTCCCAGATGTGGCAGCCTCTAGAATTAATTTCTGGGAAGGATCAGCCTCAGGTGCCTTGCATTTTCTGCTTGACAGAAGAGAGAGGAATCTGGTACCTGGACCAAATCAGGAGAGAGCAGTATATTACAAACAAAGAATTTCTTAATTCTCATCTCCTGCCAAAGAAGAAACACCAAAAAATATACTTATTTACGCTTGAACCTCGAACAATTGAAGATTTTGAGTCTATGAATACATACCTGCAGACGTCTCCAACATCTTCATTTATAACCACATCATTTTGTTCCTTGCAGACCCCAGAAGGGGTTTACTGTTTGGTGGGCTTCATCCTCACCTATAGAAAATTCAATTATAAAGACAATACAGATCTGGTCGAGTTTAAAACTCTCACTGAGGAAGAGGTTGAAGAAGTGCTGAGAAATATATTTAAGATTTCCTTGGGGAGAAATCTCGTGCCCAAACCTGGTGATGGATCCCTTACTATTTAG“ P>

【问题讨论】:

  • 您应该向表单的端点发送请求...例如:http://genes.mit.edu/cgi-bin/fas-ess.pl 尝试将site 变量更改为该变量,看看您会得到什么
  • 我收到一个错误“urllib.error.HTTPError: HTTP Error 500: Internal Server Error”
  • @JonClements 您在我必须将其发送到的站点上是对的,但是当我提交时,我的数据中缺少一些参数。我的 form_data 行变成了“form_data = {'set':'FAS-hex3','sequence':info,'submit':'Submit'}”,它起作用了!感谢您的帮助!

标签: python python-3.x http-post


【解决方案1】:

您必须像 Jon Clements 解释的那样更改发送请求,并将 set 添加到您的 form_data:

site = "http://genes.mit.edu/cgi-bin/fas-ess.pl"
def getinfo(info):
    form_data = {'sequence':info, 'set':'FAS-hex2'}

【讨论】:

  • @Eric Thomas.. 看到你自己已经掌握了!我花了一些时间来查看您的问题,所以没有阅读您对 JonClements 的评论。
  • 这很酷,我继续并标记了它,因为它可能对未来的问题有用。当时确实没有明确的指南。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 2012-09-18
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多