如何从html表中获取值?

2024-10-04 05:20:46 发布

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

我试图从以下站点获取信息:http://www.ebi.ac.uk/intact/,然后搜索Q9SUE8。使用urllib可以获得页面的html:

import urllib2
import urllib
url = 'http://www.ebi.ac.uk/intact/'
values = {'queryTxt':'Q9SUE8'}

data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
print the_page

从浏览器中搜索Q9SUE8时,结果如下表所示:

^{pr2}$

我要提取值Q96300。我可以在html中找到列标题:

<tr>
  <td>
    <input id="mainPanels:columnSelection:3" type="checkbox" name="mainPanels:columnSelection" checked="checked" value="moleculeB.links" />
    <label for="mainPanels:columnSelection:3">&#160;Links 'B'</label>
  </td>
</tr>   

我不熟悉html,但我猜Q96300来自value=“分子链". 我怎样才能得到这个价值?在


Tags: importhttpurlhtmlwwwurllib2urllibac
1条回答
网友
1楼 · 发布于 2024-10-04 05:20:46

我不确定您是否需要担心javascript。很可能是会话/隐藏的输入问题。在

但以下代码有效:

import mechanize
import re

b = mechanize.Browser()

# Visit search page
url = 'http://www.ebi.ac.uk/intact'
resp = b.open(url)
page = resp.read()

# Fill out and submit form
b.select_form(name="intactForm")
b["queryTxt"] = 'Q9SUE8'
resp = b.submit()
page = resp.read()

# Parse Page
matches = re.findall('<td role="gridcell" class="cellTextCompound"><div class="ui-dt-c"><a href=".*?" target="_blank">(.*?)</a>', page)

linksB = matches[0]
print linksB

输出:

^{pr2}$

注意,它需要mechanize模块(在Fedora repo中作为python-mechanize提供)。在

相关问题 更多 >