我有一个带表的html文件(它是一个很大的,所以只给出了示例代码)。我想检索表中的值。我从python尝试了HTMLParser库。
我开始编码如下。然后我发现属性“class”与系统定义的关键字相同。所以它给了我错误。
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
if tag == 'tr':
for class in attrs:
if class == 'Table_row'
p = MyHTMLParser()
p.feed(ht)
表格的HTML代码
<table class="Table_rows" cellspacing="0" rules="all" border="1" id="MyDataGrid" style="width:700px;border-collapse:collapse;">
<tr class="Table_Heading">
<td>STATION CODE</td><td>STATION NAME</td><td>SCHEDULED ARRIVAL</td><td>SCHEDULED DEPARTURE</td><td>ACTUAL/ EXPECTED ARRIVAL</td><td>ACTUAL/ EXPECTED DEPARTURE</td>
</tr><tr class="Table_row">
<td>TVC </td><td style="width:160px;">ORIGON</td><td>Starting Station </td><td>05:00, 07 May 2011</td><td>Starting Station</td><td>05:00, 07 May 2011</td>
</tr><tr class="alternat_table_row">
<td>TVP </td><td>NEY YORK</td><td>05:04, 07 May 2011</td><td>05:05, 07 May 2011</td><td>05:04, 07 May 2011</td><td>05:05, 07 May 2011</td>
</tr>
</table>
更新
如何在标签之间获取数据?
答案 0 :(得分:4)
请注意handle_starttag
方法的文档说明:
tag参数是的名称 标签转换为小写。阁楼 参数是(名称,值)的列表 包含找到的属性的对 标签内的&lt;&gt;括号中。
所以,你可能正在寻找类似的东西:
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
if tag == 'tr':
for name, value in attrs:
if name == 'class':
print 'Found class', value
p = MyHTMLParser()
p.feed(ht)
打印:
Found class Table_Heading
Found class Table_row
Found class alternat_table_row
P.S。我还推荐使用BeautifulSoup来解析使用Python的HTML。
答案 1 :(得分:2)
如何打印像STATION这样的值 代码站名称ORIGON ......?。
你可以用BeautifulSoup这样做。
from BeautifulSoup import BeautifulSoup
html = '''\
<td>STATION CODE</td><td>STATION NAME</td><td>SCHEDULED ARRIVAL</td><td>SCHEDULED DEPARTURE</td><td>ACTUAL/ EXPECTED ARRIVAL</td><td>ACTUAL/ EXPECTED DEPARTURE</td>
</tr><tr class="Table_row">
<td>TVC </td><td style="width:160px;">ORIGON</td><td>Starting Station </td><td>05:00, 07 May 2011</td><td>Starting Station</td><td>05:00, 07 May 2011</td>
'''
soup = BeautifulSoup(html)
tag = soup.findAll('td', limit=2)
tag_O = soup.findAll('td')[7]
for i in range(len(tag)):
print tag[i].string
print tag_O.string
'''Output-->
STATION CODE
STATION NAME
ORIGON
'''
答案 2 :(得分:1)
我强烈推荐使用BeautifulSoup库。它可以轻松处理破坏的HTML。