有太多的html and xml libraries built into python,很难相信没有对实际HTML解析的支持。
我已经为这个任务找到了很多优秀的第三方库,但是这个问题是关于python标准库的。
要求:
)Hello, <i>World</i>!
)加分:
<big>does anyone here know <html ???
这是我要求的90%的解决方案。这适用于我尝试过的有限的HTML集合,但是正如每个人都清楚地看到的那样,这并不完全是健壮的。因为我盯着文档看了15分钟和一行代码,所以我想我可以向stackoverflow社区咨询类似但更好的解决方案。。。
from xml.etree.ElementTree import fromstring
DOM = fromstring("<html>%s</html>" % html.replace(' ', ' '))
把美丽组的源代码复制到你的脚本中;-)我只是在开玩笑。。。你所能写的任何能完成这项工作的东西,或多或少都会复制类似库中已经存在的功能。
如果这真的不起作用,我不得不问,为什么只使用标准库组件如此重要?
可靠地解析HTML是一个相对现代的开发(尽管看起来很奇怪)。因此,标准库中肯定没有任何内容。HTMLParser可能看起来是一种处理HTML的方法,但事实并非如此——它在许多非常常见的HTML上都失败了,尽管您可以处理这些失败,但总会有另一个您没有想到的情况(如果您真的成功地处理了每一个失败,您将基本上重新创建BeautifulSoup)。
真正合理的解析HTML的方法只有3种(在web上可以找到):lxml.html、BeautifulSoup和html5lib。到目前为止,lxml是速度最快的,但安装起来可能有点棘手(在App Engine这样的环境中是不可能的)。html5lib是基于HTML 5如何指定解析的;尽管在实践中与其他两个类似,但它解析断开的HTML的方式可能更“正确”(它们都解析非常好的HTML相同)。它们都在解析损坏的HTML方面做了相当出色的工作。虽然我发现它的API不必要地古怪,但BeautifulSoup可能很方便。
您的选择是更改您的需求,或者复制第三方模块开发人员所做的所有工作。
漂亮的soup由一个包含2000行代码的python文件组成,如果依赖性太大,那么继续写你自己的,它不会很好地工作,而且可能不会小很多。
相关问题 更多 >
编程相关推荐