php用正则表达抓取网页中文章(PHPHTML5+支持无效的处理DOM文档和结构的工具)

优采云 发布时间: 2022-02-05 02:22

  php用正则表达抓取网页中文章(PHPHTML5+支持无效的处理DOM文档和结构的工具)

  Zend_Dom Zend_Dom 提供了处理 DOM 文档和结构的工具。目前,我们提供 Zend_Dom_Query,它提供了一个统一的接口来使用 XPath 和 CSS 选择器查询 DOM 文档。

  QueryPath QueryPath 是一个用于操作 XML 和 HTML 的 PHP 库。它不仅适用于本地文件,还适用于 Web 服务和数据库资源。它实现了许多 jQuery 接口(包括 CSS 样式的选择器),但它为服务器端的使用做了很大的调整。它可以通过 Composer 安装。

  fDOMDocument fDOMDocument 扩展了标准 DOM 以在所有错误情况下使用异常而不是 PHP 警告或通知。他们还添加了各种自定义方法和快捷方式,以方便并简化使用 DOM。

  saber/xml saber/xml 是一个包装和扩展 XMLReader 和 XMLWriter 类的库,用于创建简单的“xml 到对象/数组”映射系统和设计模式。写入和读取 XML 是单程的,因此对于大型 xml 文件来说速度很快并且需要较少的内存。

  FluidXML FluidXML 是一个 PHP 库,用于使用干净流畅的 API 操作 XML。它利用有趣且有效的 XPath 和流畅的编程模式。

  第 3 方(不基于 libxml)构建 DOM/libxml 的好处是您可以获得良好的开箱即用性能,因为您基于本机扩展。然而,并不是所有的第三方库都走这条路。其中一些在下面列出

  PHP Simple HTML DOM Parser 用 PHP5+ 编写的 HTML DOM 解析器允许您以非常简单的方式操作 HTML!需要 PHP 5+。支持无效的 HTML。使用选择器在 HTML 页面上查找标签,就像 jQuery。从单行中提取 HTML 内容。我一般不推荐这个解析器。代码库很烂,解析器本身很慢,而且内存很大。并非所有的 jQuery 选择器(例如子选择器)都是可能的。任何基于 libxml 的库都应该比这更容易。

  PHP Html Parser PHPHtmlParser 是一个简单、灵活的 html 解析器,它允许您使用任何 css 选择器(如 jQuery)来选择标签。目标是帮助开发需要一种快速、简单的方法来废弃 html 的工具,无论它是否有效!这个项目原本是sunra/php-simple-html-dom-parser支持的,但是好像已经停止支持了,所以这个项目是我对他之前的作品的改编。

  同样,我不推荐这个解析器。CPU使用率高,速度相当慢。目前还没有清除创建的 DOM 对象内存的功能。这些问题尤其适用于嵌套循环。文档本身不准确且拼写错误,并且自 4 月 14 日以来尚未修复。

  Cannon 通用标记器和 HTML/XML/RSS DOM 解析器能够操作元素及其属性 支持无效的 HTML 和 UTF8 可以对元素执行类似 CSS3 的高级查询(如 jQuery - 支持命名空间) HTML 美化器(如 HTML Tidy))缩小 CSS 和Javascript 排序属性、更改字符大小写、正确缩进等。该扩展使用基于当前字符/标记的回调来解析由较小函数分隔的文档操作,以便快速轻松地覆盖从未使用过的函数。不知道有没有用。

  HTML 5 您可以使用上面的方法来解析 HTML5,但由于 HTML5 允许的标签,可能会有一些怪癖。因此,对于 HTML5,您需要考虑使用专用的解析器,例如

  html5lib

  基于 WHATWG HTML5 规范的 HTML 解析器的 Python 和 PHP 实现,以最大程度地兼容主要的桌面 Web 浏览器。

  当 HTML5 最终确定时,我们可能会看到更专业的解析器。还有一个 W3 博客 文章 称为 How-To for html 5 parsing,值得一试。

  Web 服务 如果您不想编写 PHP,也可以使用 Web 服务。一般来说,我发现的这些实用程序很少,但这只是我和我的用例。

  刮板维基。ScraperWiki 的外部接口允许您以您希望在 Web 或您自己的应用程序中使用的形式提取数据。您还可以提取有关任何刮板状态的信息。

  常用表达式 最后也是最不推荐的,您可以使用正则表达式从 HTML 中提取数据。通常,不鼓励 HTML 上的正则表达式。

  您可以在网上找到与该标记匹配的大多数片段都是易碎的。在大多数情况下,它们只适用于非常特定的 HTML。较小的标记更改,例如在某处添加空格,或在标记中添加或更改属性,可能会使 RegEx 在编写不正确时失败。在 HTML 上使用 RegEx 之前,您应该知道自己在做什么。

  HTML 解析器已经知道 HTML 的语法规则。必须为您编写的每个新 RegEx 教授正则表达式。RegEx 在某些情况下很好,但这实际上取决于您的用例。

  您可以编写更可靠的解析器,但使用正则表达式编写完整且可靠的自定义解析器是浪费时间,因为上述库已经存在并且做得更好。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线