我正在使用beauthulsoup包解析数百个HTML文档。我的代码能够很好地解析整个文档。在
我想根据条件删除所有表标记的内容。因为很少有表(根据HTML标记)实际上可能不是表,而是表中显示的文本。如果一个表的内容有超过75%的字符作为数字,我想把它当作实际的表来处理并删除它,否则我会保留它。在
我是Python新手,不知道如何才能只删除特定表的全部内容。在
假设我的HTML文档是:
100
Hello Word
Test
以下代码将生成整个HTML文档的内容,即
^{pr2}$
我想要的是:Hello Word
Test
请注意,代码还包含一个函数,用于检查文本是否有用。我分别计算字母和数字字符,因为可能有很多空格和其他垃圾字符。在
删除表格中不超过75%的数字字符。还请注意,表不必是文档的直接子级。在from bs4 import BeautifulSoup
import html5lib
def isTableUseful(text): #Returns True if table is to be included
try:
countAlpha = 0
countNumeric = 0
for char in text:
if char.isalpha():
countAlpha += 1
if char.isnumeric():
countNumeric += 1
FracNumeric = countNumeric/(countNumeric+countAlpha)
return FracNumeric < 0.75
except:
return False
soup = BeautifulSoup("
Hello Word", "html5lib")print ('\n'.join([e.encode("utf-8") for e in soup.recursiveChildGenerator() if isinstance(e,unicode) and e.strip()!=""]))