1

我使用 soup.findAll('table') 尝试在 html 文件中查找表,但它不会出现。该表确实存在于文件中,并且使用正则表达式我能够以这种方式找到它:

import sys
import urllib2
from bs4 import BeautifulSoup
import re
webpage = open(r'd:\samplefile.html', 'r').read()
soup = BeautifulSoup(webpage)
print re.findall("TABLE",webpage)   #works, prints ['TABLE','TABLE']
print soup.findAll("TABLE")   # prints an empty list []

我知道我正确地生成了汤,因为当我这样做时:

print [tag.name for tag in soup.findAll(align=None)]

它将正确打印它找到的标签。我已经尝试过用不同的方法来编写“表”,如“表”、“表”等。另外,如果我打开文件并用文本编辑器编辑它,它上面有“表”。

为什么beautifulsoup 找不到表??

4

1 回答 1

1

语境

  • 蟒蛇2.x
  • BeautifulSoup HTML 解析器

问题

  • bsoupfindall不会返回所有预期的标签,或者根本不返回任何标签,即使用户知道该标签存在于标记中

解决方案

  • 在初始化BeautifulSoup构造函数时尝试指定确切的解析器
## 前
汤= BeautifulSoup(网页)

## 后
汤= BeautifulSoup(网页,“html5lib”)

基本原理

  • 目标标记可能包括格式错误的 HTML,并且使用不同的解析器有不同程度的成功。

也可以看看

于 2017-06-17T02:54:49.813 回答