0

我正在尝试检查是否在表格中找到了数值。为什么这段代码在这个表中找不到数字文本“699”?print 语句给出的值为“None”。

html = """

<table>
December 31,                            1997     1996     1995     1994     1993
Allowance for credit losses--loans       699      773
Allowance for credit losses--
  trading assets                         285      190
Allowance for credit losses--
  other liabilities                       13       10
- --------------------------------------------------------------------------------
   Total                              $  997   $  973   $  992   $1,252   $1,324
================================================================================
</table>

"""

soup = BeautifulSoup(''.join(html))
table = soup.find('table')
test = table.find(text='699')
print test
4

2 回答 2

3

table.find()将搜索表格内的所有标签,但表格内没有标签。只有一个字符串,它恰好是一个 ASCII 表,它的格式绝不是 HTML。

如果要使用 BeautifulSoup 解析表格,则需要先将其转换为 HTML 表格。否则,您可以使用table.string获取字符串本身并使用正则表达式解析它。

于 2012-05-09T20:42:34.683 回答
0

如果您将字符串作为参数传递给 Beautiful Soup 的 find() 方法,Beautiful Soup 会查找该确切字符串。传入 text='699' 将找到字符串“699”,但不会找到包含“699”的更长字符串。

要查找包含子字符串的字符串,可以使用自定义函数或正则表达式:

 import re
 table.find(text=re.compile('699')
 table.find(text=lambda x: '699' in x)
于 2012-05-09T22:53:35.367 回答