pyparsing和HTML2text.py似乎也不适用于格式错误的HTML页面.
示例URL为http://apnews.myway.com/article/20091015/D9BB7CGG1.html
我目前的实施大致如下:
# Try using BeautifulSoup 3.0.7asoup = BeautifulSoup.BeautifulSoup(s) comments = soup.findAll(text=lambda text:isinstance(text,Comment))[comment.extract() for comment in comments]c=soup.findAll('script')for i in c: i.extract() body = bsoup.body(text=True)text = ''.join(body) # if BeautifulSoup can't handle it,# alter HTML by trying to find 1st instance of "<body" and replace everything prior to that,with "<HTML><head></head>"# try beautifulsoup again with new HTML
如果beautifulsoup仍然不起作用,那么我采用一种启发式方法来查看第一个字符,最后一个字符(看看它们是否看起来像一个代码行#< ;;并且取一行样本然后检查是否令牌是英文单词或数字.如果令牌中只有很少的单词或数字,那么我猜这行是代码.
我可以使用机器学习来检查每一行,但这看起来有点贵,我可能需要训练它(因为我不太了解无监督的学习机器),当然也可以写它.
任何建议,工具和策略都是最受欢迎的.此外,我意识到后一部分相当混乱,因为如果我得到一行确定包含代码,我现在扔掉整行,即使行中有少量实际的英文文本.
解决方法 尽量不要笑,但是:class textformatter: def __init__(self,lynx='/usr/bin/lynx'): self.lynx = lynx def HTML2text(self,unicode_HTML_source): "Expects unicode; returns unicode" return Popen([self.lynx,'-assume-charset=UTF-8','-display-charset=UTF-8','-dump','-stdin'],stdin=PIPE,stdout=PIPE).communicate(input=unicode_HTML_source.encode('utf-8'))[0].decode('utf-8')
我希望你有lynx!
总结以上是内存溢出为你收集整理的用于从格式错误的html页面中提取文本的Python策略全部内容,希望文章能够帮你解决用于从格式错误的html页面中提取文本的Python策略所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)