使用Python解析一行HTML中的段落

2024-10-02 08:27:25 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑到HTML代码的灵活性,解析出用户通过浏览器看到的段落似乎是一项非常重要的任务。

目前,我有一个不太可靠的解决方案:

tree = lxml.etree.fromstring(html, lxml.etree.HTMLParser()) if isinstance(html, basestring) else html 
for skiptag in ('//script', '//iframe', '//style', 
                '//link', '//meta', '//noscript', '//option'):    
    for node in tree.xpath(skiptag):
        node.getparent().remove(node)
paragraphs = lxml.etree.tostring(tree, encoding=unicode, method='text')

我面临的问题主要是如何处理异常(或者说,自由风格)。

一个很常见的情况是,在HTML中,许多段落都是在一行(例如下面的代码)中编写的,我的代码将它们解析为一个段落。

^{pr2}$

我的问题是:

  • 一般来说,有没有什么好方法可以正确地分析出段落?在
  • 在这个特殊的例子中,我应该如何优化我的代码,以从一行HTML中正确地获取段落,因为<p>不仅可以表示段落,而且还有许多其他方法可以应用于free样式?在
  • 有什么一般的建议吗?在

Tags: 方法代码用户innodetreeforhtml
2条回答

看看html2text。在

它可能不能完全满足您的需要,但它只是一个500行的脚本,所以它应该很容易适应您的特殊需要。在

使用xpath方法在所有段落上循环:

for para in tree.xpath("//p"):
    ...

相关问题 更多 >

    热门问题