我正在尝试解析一个表,除了第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'
答案 0 :(得分:1)
来自docs:
如果一个标签包含多个东西,那么不清楚.string应该引用什么,所以.string被定义为None
您的第五个td
元素包含多个内容(某些文字和img
),因此string
属性为无。
您可以使用strings
或stripped_strings
生成器来提取此内容 - 在这种情况下,您只有一个返回值,但值得考虑如何处理一个案例img
之后还有文字。
如果标签内有多个内容,您仍然可以只查看字符串。使用.strings生成器
这些字符串往往有很多额外的空格,您可以使用.stripped_strings生成器删除
或者,get_text
将提取纯文本内容,并为您提供一些控制剥离和加入文本的选项。