【问题标题】:Extracting info from html using PHP(XPath), PHP/Python(Regexp) or Python(XPath)使用 PHP(XPath)、PHP/Python(Regexp) 或 Python(XPath) 从 html 中提取信息
【发布时间】:2010-12-05 22:15:14
【问题描述】:

我有大约。我需要从中提取信息的 40k+ html 文档。我曾尝试使用 PHP+Tidy(因为大多数文件格式不正确)+DOMDocument+XPath 但它非常慢....建议我使用正则表达式,但 html 文件未在语义上标记(表基于布局,到处都使用无意义的标签/类),我不知道我应该从哪里开始......

只是好奇,使用正则表达式(PHP/Python)是否比使用 Python 的 XPath 库更快? Python 的 Xpath 库通常比 PHP 的对应库更快吗?

【问题讨论】:

    标签: php python html regex xpath


    【解决方案1】:

    如果需要速度,请查看lxml。 lxml 是libxml2 和libxslt C 库的pythonic 绑定。使用 C 库比任何纯 php 或 python 版本都快得多。

    Ian Bicking 有一些令人印象深刻的benchmarks:

    结论

    在开始这些基准测试之前,我知道 lxml 很快,但没想到会这么快。

    解析结果:

    Parsing Resutls http://1.2.3.9/bmi/blog.ianbicking.org/wp-content/uploads/images/parsing-results.png

    【讨论】:

      【解决方案2】:

      你可以试试 Python 中的Beautiful Soup。它是一个非常棒的解析器,可以从垃圾 HT​​ML 中生成可用的 DOM。具有一些正则表达式技能可能会为您提供所需的东西。狩猎愉快!

      根据我的主观经验,Python 中的大多数比较操作都比 PHP 中的要快。部分原因是 Python 是一种编译语言,而不是在运行时解释,部分原因是 Python 已经被其贡献者优化以提高效率......

      不过,对于 40k+ 的文档,还是找一台不错的快速机器 ;-)

      【讨论】:

      • 感谢您的回答:D 生产机器的运行速度应该是我的开发机器的两倍。 pc :D 但它在我的机器上运行太慢了:/ 很快就会尝试漂亮的汤
      • 其他地方提到的lxml也有一个BeautifulSoup-like API。
      【解决方案3】:

      正如上一篇文章提到的,由于字节码编译(那些 .pyc 文件),Python 通常比 php 更快。无论如何,许多 DOM/SAX 解析器在内部使用了相当多的正则表达式。那些告诉你使用正则表达式的人需要被告知它不是灵丹妙药。对于超过 40k 的文档,我建议使用新的多线程或经典的 parallel python 并行化任务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-09
        • 2020-03-05
        • 1970-01-01
        • 2013-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多