【问题标题】:How to get value from a html table?如何从 html 表中获取值?
【发布时间】:2012-11-08 19:59:31
【问题描述】:

我正在尝试从以下站点获取信息: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 时,结果如下表:

#    Molecule 'A'    Links 'A'    Molecule 'B'    Links 'B'    some more columns
--------------------------------------------------------------------------------
1    T13J8.10        Q9SUE8       GRF7            Q96300
                     EBI-4459886

我想提取值 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="moleculeB.links"。我怎样才能得到那个值?

【问题讨论】:

  • 很抱歉,如果我有点过头了,但是,您是否试图获取给定元素的值,您可以从中获取类或 id 或索引信息?
  • 据我所知,我只有一个输入 ID,但我从未真正使用过 javascript,所以我不知道
  • 如果你有输入元素的id,那就超级简单了。我将在下面发布答案。
  • 我取出了javascript标签,你的问题与javascript无关
  • @jedwards 我更进一步,删除了所有对 JavaScript 的引用。

标签: python web-scraping


【解决方案1】:

我不确定您是否需要担心 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

输出:

Q96300

请注意,它需要 mechanize 模块(在 Fedora 存储库中以 python-mechanize 的形式提供)。

【讨论】:

  • 为什么他需要这么多代码来读取一个值?你应该简化你对可行的答案。
猜你喜欢
  • 2012-07-19
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多