BeautifulSoup hicup在独特的标记

时间:2013-08-13 20:01:00

标签: python beautifulsoup

我正在尝试解析一个表,除了第5项之外没有问题。项似乎 有更复杂的参数。

我对为什么会这样做感到有点困惑

我的代码是:

for row in tables.findAll('tr'):
    col = row.findAll('td')
    record =[]
    for i in range(0,9):
        cell = col[i].string.strip()

用“汤”:

<td align="left" class="table-top">Item1</td>
<td align="left" class="table-top">Item2</td>
<td align="left" class="table-top">Item3</td>
<td align="center" class="table-top">Item4</td>
<td align="right" class="table-top">Item5 <img align="top" alt="" border="0" height="12" src="gfx/chart_hover_icon.gif" width="15"/></td>

前4个解析但5个错误:

cell = col[i].string.strip()
AttributeError: 'NoneType' object has no attribute 'strip'

1 个答案:

答案 0 :(得分:1)

来自docs

  

如果一个标签包含多个东西,那么不清楚.string应该引用什么,所以.string被定义为None

您的第五个td元素包含多个内容(某些文字和img),因此string属性为无。

您可以使用stringsstripped_strings生成器来提取此内容 - 在这种情况下,您只有一个返回值,但值得考虑如何处理一个案例img之后还有文字。

  

如果标签内有多个内容,您仍然可以只查看字符串。使用.strings生成器

     

这些字符串往往有很多额外的空格,您可以使用.stripped_strings生成器删除

或者,get_text将提取纯文本内容,并为您提供一些控制剥离和加入文本的选项。