python - 解析 <span> 标签并使用 python 获取数据

标签 python html parsing

我是 stackoverflow 的新手,这是我的第一个问题。

我正在用 Python 编写脚本来解析 HTML 页面。 页面看起来像这样:

<TABLE style="border: 1px solid black">

<TR>
    <TD colspan="2"><span id="text1" style="color: white">DATA1</span></TD>
</TR>
<TR>    
    <TD class="rowLabel" valign="top">Data name</TD>
    <TD valign="top" width="100"><span id="somename1" class="alsoname">DATA2</span></TD>
</TR>   
<TR>    
    <TD class="rowLabel" valign="top">Data name</TD>
    <TD valign="top" width="100"><span id="somename2" class="alsoname">DATA3</span></TD>
</TR>                                               
<TR>
    <TD class="rowLabel" valign="top">Data name</TD>
    <TD valign="top" width="100"><span id="somename3" class="alsoname">DATA4</span></TD>
</TR>
<TR>
    <TD class="rowLabel" valign="top">Data name</TD>
    <TD valign="top" width="100"><span id="somename4" class="alsoname">DATA5</span></TD>
</TR>
<TR>
    <TD class="rowLabel" valign="top">Data name</TD>
    <TD valign="top" width="100"><span id="somename5" class="alsoname">DATA6</span></TD>
</TR>                                               
<TR>
    <TD class="rowLabel" valign="top">Data name</TD>
    <TD valign="top" width="100"><span id="somename6" class="alsoname">DATA7</span></TD>
</TR>
<TR>
    <TD class="rowLabel" valign="top">Data name</TD>
    <TD valign="top" width="100"><span id="somename7" class="alsoname">DATA8</span></TD>
</TR>                           

我想根据 span id 名称从括号中收集数据值。 如果 span ID == somename1 则将它的数据值放入变量中。

到目前为止我有这段代码:

from HTMLParser import HTMLParser

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        if tag == 'span':
            for name, value in attrs:
                if name == 'id' and value == 'somename1':
                    print 'ID', value
                elif name == 'id' and value == 'somename2':
                    print 'ID', value
                elif name == 'id' and value == 'somename3':
                    print 'ID', value
                else :
                    print 'NO DATA'

p = MyHTMLParser()
p.feed(flush)  

谁能帮帮我?

最佳答案

我发现将 BeautifulSoup 与任何类型的 HTML 一起使用要容易得多。

from BeautifulSoup import BeautifulSoup as bs
from urllib2 import urlopen

data = urlopen('wherever').read()

soup = bs(data)

for span in soup.findAll('span'):
    print span['id'], span.text

您可能需要改进它的某些部分,因为您只提供了一个表格。

关于python - 解析 <span> 标签并使用 python 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8413581/

相关文章:

sql - 需要弄清楚如何解析 GETDATE() 以将其与表中的 HHMMSS 值进行比较以查找耗时

java - Java 中 JSON 数组字符串到 JSONArray 对象

scala - 如何使用 SBT 解析器匹配由可选空格包围的字符串

python - Numpy 或 Pandas 中的 Linspace split

python - 在模型序列化器中获取当前用户

html - 了解 .body 和 body 之间的区别

html - 行内 block 元素偏离位置

python - 计算列表python中的奇数

python - 按 drf 中的价格总和排序查询集

android - 使用 iText 库将 html 转换为 pdf 时未应用 hr 的内联 CSS