如何从ucsc基因组浏览器中提取表格浏览结果

2024-04-29 21:58:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想自动化从UCSC基因组浏览器提取信息的过程,以节省大量的手工输入。以下代码获取了我认为正确的表单部分,但我无法提取结果:

 from mechanize import Browser
 from bs4 import BeautifulSoup
 import requests
 import re

 br = Browser()
 url = 'http://genome-euro.ucsc.edu/cgi-bin/hgTables?hgsid=201790284_dkwVYFu7V6ISmTzFGlXzo23aUhXk'
 br.set_handle_robots( False )

 for form in br.forms():
      if form['position']:
           print form['position']
           form['position'] = 'chr9:21802635-21865969'
           print form['position']
           break

 for form in br.forms():
     if form['hgta_doTopSubmit']:
          br.submit()

第一部分工作得很好,改变了要查询的基因组的位置。第二部分似乎没有提交任何内容。它返回以下错误:

回溯(最近一次呼叫): 文件“C:\Documents and Settings\Silvia\Desktop\Copy\web\U scraping\UCSC\table\browser_表单.py“,第26行,英寸 br.提交() mechanize\n20.2.7\pythoize\n20.2文件包_机械化.py“,第541行,提交 返回自我开放(自我点击(*参数,**千瓦) 文件“C:\Python27\lib\site packages\mechanize-0.2.5-py2.7.egg\mechanize_机械化.py“,第530行,单击 请求=self.form.click(*args,**kwds) AttributeError:“NoneType”对象没有“click”属性

手动网站返回一个文本屏幕,对应于关于这个位置的详细信息,但我似乎无法在这里提取它。有人对如何避开这个问题有什么建议吗?我只需要存储输出结果-相当于用户在网站上按“获取结果”。非常感谢。在


Tags: 文件infrompybrimportbrowserform
1条回答
网友
1楼 · 发布于 2024-04-29 21:58:37

您始终可以使用^{}发出请求:

import requests

url = 'http://genome-euro.ucsc.edu/cgi-bin/hgTables?hgsid=201790284_dkwVYFu7V6ISmTzFGlXzo23aUhXk'    
session = requests.Session()

params = {
    'hgsid': '201790284_dkwVYFu7V6ISmTzFGlXzo23aUhXk',
    'jsh_pageVertPos': '0',
    'clade': 'mammal',
    'org': 'Human',
    'db': 'hg19',
    'hgta_group': 'genes',
    'hgta_track': 'refGene',
    'hgta_table': 'refFlat',
    'hgta_regionType': 'range',
    'position': 'chr9:21802635-21865969',
    'hgta_outputType': 'gff',
    'boolshad.sendToGalaxy': '0',
    'boolshad.sendToGreat': '0',
    'boolshad.sendToGenomeSpace': '0',
    'hgta_outFileName': '',
    'hgta_compressType': 'none',
    'hgta_doTopSubmit': 'get output'
}

response = session.post(url, data=params)
print response.content

印刷品:

^{pr2}$

相关问题 更多 >