美丽的汤没有找到表ID

时间:2014-07-21 14:42:23

标签: python python-3.x html-parsing beautifulsoup

我正在尝试从包含多个表的网页中提取一些数据。所有表都有一个id =“name”属性。我用Python 3.4.1使用漂亮的汤4。我的代码在第一个表中删除就好了,但在最后一个表上它返回'None'而我无法弄清楚原因。

表格信息的html代码在下面,从我所看到的,它的格式与其他具有其他id名称的表格没有任何不同,例如id = Datagrid1

<TR>
<TD vAlign=top>
  <TABLE id=Datagrid7 
  style="FONT-SIZE: smaller; FONT-FAMILY: Verdana; WIDTH: 675px; BORDER-COLLAPSE: collapse" 
  cellSpacing=0 rules=all align=left border=1>
    <TBODY>

下面的python代码返回None,但如果我将id更改为另一个已知的id名称,它将起作用。

table = soup.find('table', id='DataGrid7')  
print(table)

2 个答案:

答案 0 :(得分:1)

您的程序中存在拼写错误,它应该很小'g'

from bs4 import BeautifulSoup

html="""<TR>
<TD vAlign=top>
  <TABLE id=Datagrid7
  style="FONT-SIZE: smaller; FONT-FAMILY: Verdana; WIDTH: 675px; BORDER-COLLAPSE: collapse"
  cellSpacing=0 rules=all align=left border=1>
    <TBODY>"""

soup=BeautifulSoup(html)


print soup.find('table',id='Datagrid7')

#output <table align="left" border="1" cellspacing="0" id="Datagrid7" rules="all" style="FONT-SIZE: smaller; FONT-FAMILY: Verdana; WIDTH: 675px; BORDER-COLLAPSE: collapse">
<tbody></tbody></table>

答案 1 :(得分:1)

代码中有一个拼写错误。

表的ID为Datagrid7,而不是DataGrid7

table = soup.find('table', id='Datagrid7')
#                                  ^