用于从格式错误的html页面中提取文本的Python策略

用于从格式错误的html页面中提取文本的Python策略,第1张

概述我正在尝试从任意html页面中提取文本.有些页面(我无法控制)有错误的html或脚本,这使得这很困难.此外,我在一个共享的托管环境,所以我可以安装任何 python库,但我不能只在服务器上安装我想要的东西. pyparsing和html2text.py似乎也不适用于格式错误的html页面. 示例URL为http://apnews.myway.com/article/20091015/D9BB7CG 我正在尝试从任意HTML页面中提取文本.有些页面(我无法控制)有错误的HTML或脚本,这使得这很困难.此外,我在一个共享的托管环境,所以我可以安装任何 python库,但我不能只在服务器上安装我想要的东西.

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仍然不起作用,那么我采用一种启发式方法来查看第一个字符,最后一个字符(看看它们是否看起来像一个代码行#&lt ;;并且取一行样本然后检查是否令牌是英文单词或数字.如果令牌中只有很少的单词或数字,那么我猜这行是代码.

我可以使用机器学习来检查每一行,但这看起来有点贵,我可能需要训练它(因为我不太了解无监督的学习机器),当然也可以写它.

任何建议,工具和策略都是最受欢迎的.此外,我意识到后一部分相当混乱,因为如果我得到一行确定包含代码,我现在扔掉整行,即使行中有少量实际的英文文本.

解决方法 尽量不要笑,但是:

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策略所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1076718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存