我试图通过使用Python的BeautifulSoup或HTMLParser从SEC的EDGAR系统上的10-K报告(例如公司的代理报告)中提取“唯一的”文本信息。然而,我正在使用的解析器似乎不能很好地适用于'txt'格式的文件,包括很大一部分无意义的符号和标签以及一些根本不需要的xbrl信息。但是,当我将解析器直接应用于'htm'格式文件时,它们或多或少地免于无意义标签的问题,解析器似乎工作得相当好。如何从html文件中删除所有不必要的标签和标志?
"""for Python 3, from urllib.request import urlopen"""
from urllib2 import urlopen
from bs4 import BeautifulSoup
"""for extracting text data only from txt format"""
txt = urlopen("https://www.sec.gov/Archives/edgar/data/1660156/000166015616000019/0001660156-16-000019.txt")
bs_txt = BeautifulSoup(txt.read())
bs_txt_text = bs_txt.get_text()
len(bs_txt_text) # 400051
"""for extracting text data only from htm format"""
html = urlopen("https://www.sec.gov/Archives/edgar/data/1660156/000166015616000019/f201510kzec2_10k.htm")
bs_html = BeautifulSoup(html.read())
bs_html_text = bs_html.get_text()
len(bs_html_text) # 98042
但问题是我在靠上的位置“txt'格式的文件,而不是‘HTM’的人,所以我的问题是,有没有什么办法对付删除所有无意义的迹象并从这些文件中提取标签并仅提取文本信息作为直接从'htm'文件提取的文本信息?我对使用Python进行解析相对来说比较陌生,所以如果您对此有任何想法,这将非常有帮助。先谢谢你!
这些文件('.txt'和'.htm')似乎都是某种基于SGML的东西,里面嵌入了HTML文档。 '.txt'似乎嵌入了很多HTML文档,而'.htm'只有一个。你可能想尝试一个SGML解析器而不是HTML解析器。 – user2357112
或...显然它应该是基于XML的,而不是基于SGML的?在开始的地方有一个部分说“.sgml”,但[显然它是XML](https://en.wikipedia.org/wiki/XBRL)。 – user2357112
尝试使用XML解析器解析它。 – user2357112