处理html和NLTK

时间:2014-06-04 23:26:51

标签: python html nltk

我试图用NLTK处理HTML。 首先,我使用PlaintextCorpusReader加载所有文件:

from nltk.corpus import PlaintextCorpusReader
corpus_root = 'C:\corpus\'
wordlists = PlaintextCorpusReader(corpus_root, '.*')

现在我如何使用' urlopen(url).read()'等功能来处理HTML? 或者有其他方法来处理它(比如读取该corpus_root中的所有文件并处理HTML文件)?

1 个答案:

答案 0 :(得分:0)

方法A:如果您想处理仅在.html文件中找到的HTML,那么您可以简单地识别那些html_files = PlaintextCorpusReader(corpus_root,'.*\.html')然后使用BeautifulSoup或lxml(或urllib)您似乎喜欢)从字符串中读取以创建DOM对象。例如:

from lxml import etree

for htm in html_files:
     dom = etree.fromstring(htm)

     #any further manipulations, e.g.:
     content = dom.cssselect('#content')        # you can also use cssselect to take all links or whatever
     maintext = content[0].text    # in case there are no other embedded tags in this one

方法B:如果你正在处理带有纯文本和html部分的'混合'文件,那么我想唯一的方法是使用正则表达式来提取基于标签的html部分,例如:htm_part = re.findall('<.*?>.*?</.*?>',yourdoc,re.DOTALL)。如果文件很长,这可能会返回一个列表,因此您可以执行''.join(htm_part)作为下一步。在仅提取html部分后,您可以继续尝试再次使用lxml或BeautifulSoup来创建DOM对象,以便更好地使用它,如上所述。如果它破了,那么最有可能的正则表达式出错了,你将不得不进行微调。希望这会有所帮助。