如何解析HTML / XML并从中提取信息?
我更喜欢使用本机XML扩展之一,因为它们与PHP捆绑在一起,通常比所有第3方库都快,并为我提供了所需的所有标记控制权。
DOM扩展使您可以通过带有PHP 5的DOM API通过XML文档进行操作。它是W3C的Document Object Model Core Level
3的实现,它是一种平台和语言无关的界面,允许程序和脚本动态访问和更新。文件的内容,结构和样式。
DOM能够解析和修改现实世界(损坏的)HTML,并且可以执行XPath查询。它基于libxml
使用DOM需要花一些时间,但是IMO值得花时间。由于DOM是与语言无关的接口,因此您会找到许多语言的实现,因此,如果需要更改编程语言,那么您很可能已经知道如何使用该语言的DOMAPI。
XMLReader扩展是XML提取解析器。阅读器充当光标,在文档流上前进并在途中的每个节点处停止。
像DOM一样,XMLReader也基于libxml。我不知道如何触发HTML解析器模块,因此使用XMLReader解析损坏的HTML的机会可能不如使用DOM健壮,在DOM中您可以明确地告诉它使用libxml的HTML解析器模块。
此扩展使您可以创建XML解析器,然后为不同的XML事件定义处理程序。每个XML解析器还具有一些您可以调整的参数。
XML解析器库也基于libxml,并实现了SAX样式的XML推送解析器。与DOM或SimpleXML相比,内存管理可能是更好的选择,但与XMLReader实现的请求解析器相比,使用起来更加困难。
SimpleXML扩展提供了一个非常简单易用的工具集,可以将XML转换为可以使用常规属性选择器和数组迭代器处理的对象。
当您知道HTML是有效的XHTML时,可以选择SimpleXML。如果您需要解析损坏的HTML,甚至不用考虑SimpleXml,因为它会阻塞。
如果您更喜欢使用第三方库,则建议使用实际上在下面使用DOM的库,而不是字符串解析。
FluentDOM为PHP中的DOMDocument提供了类似jQuery的FluentXML接口。选择器以XPath或CSS编写(使用CSS到XPath转换器)。当前版本扩展了DOM的实现标准接口,并增加了DOMLivingStandard的功能。FluentDOM可以加载JSON,CSV,JsonML,RabbitFish等格式。可以通过Composer安装。
Wa72 \HtmlPageDom是一个PHP库,可使用它轻松处理HTML文档。它需要Symfony2组件中的DomCrawler来遍历DOM树,并通过添加用于处理HTML文档DOM树的方法来扩展它。
phpQuery是服务器端可链接的CSS3选择器驱动的文档对象模型(DOM)API,它基于用PHP5编写的jQueryJavaScript库,并提供了附加的命令行界面(CLI)。
Zend_Dom
Zend_Dom提供了用于处理DOM文档和结构的工具。当前,我们提供Zend_Dom_Query,它提供了一个统一的接口,用于同时使用XPath和CSS选择器查询DOM文档。
QueryPath是一个用于处理XML和HTML的PHP库。它不仅可以与本地文件一起使用,还可以与Web服务和数据库资源一起使用。它实现了许多jQuery接口(包括CSS样式的选择器),但为服务器端使用做了很大的调整。可以通过Composer安装。
fDOMDocument扩展了标准DOM,以在所有错误情况下都使用异常,而不是PHP警告或通知。他们还添加了各种自定义方法和快捷方式,以方便使用并简化DOM的使用。
sabre / xml是一个包装和扩展XMLReader和XMLWriter类的库,以创建简单的“从XML到对象/数组”的映射系统和设计模式。写入和读取XML是单次通过的,因此可以快速进行,并且在大型xml文件上需要较少的内存。
FluidXML是一个PHP库,用于使用简洁流畅的API来处理XML。它利用XPath和流畅的编程模式来使游戏变得有趣而有效。
建立在DOM / libxml上的好处是,由于您基于本机扩展,因此可以立即获得良好的性能。但是,并非所有第3方库都遵循这条路线。下面列出其中一些
- 用PHP5 +编写的HTML DOM解析器使您可以非常简单地操作HTML!
- 需要PHP 5+。
- 支持无效的HTML。
- 使用jQuery之类的选择器在HTML页面上查找标签。
- 从HTML中提取内容。
我通常不建议使用此解析器。代码库太可怕了,解析器本身也很慢并且占用大量内存。并非所有的jQuery选择器(例如子选择器都是可行的。任何基于libxml的库都应轻而易举地胜过它。
PHPHtmlParser是一个简单,灵活的html解析器,它使您可以使用任何CSS选择器(如jQuery)来选择标签。目标是协助开发工具,这些工具需要快速,简便的方式来废弃html,无论它是否有效!该项目最初由sunra
/ php-simple-html-dom-parser支持,但该支持似乎已停止,因此该项目是我对他先前工作的改编。
同样,我不建议使用此解析器。CPU使用率很高时,速度相当慢。也没有清除创建的DOM对象的内存的功能。这些问题在嵌套循环中尤为严重。文档本身不准确且拼写错误,自16年4月14日以来未对修复程序做出任何回应。
- 通用标记器和HTML / XML / RSS DOM解析器
- 能够操纵元素及其属性
- 支持无效的HTML和UTF8
- 可以对元素执行类似CSS3的高级查询(例如jQuery-支持名称空间)
- HTML美化工具(例如HTML Tidy)
- 缩小CSS和Javascript
- 排序属性,更改字符大小写,正确缩进等
- 可扩展的
- 使用基于当前字符/令牌的回调解析文档
- 将操作分成较小的功能,以便于覆盖
- 快速简便
没用过。无法判断是否有好处。
您可以使用以上内容来解析HTML5,但是由于HTML5允许的标记,因此可能会有一些怪癖。因此,对于HTML5,您需要考虑使用专用的解析器,例如
html5lib
基于WHATWG HTML5规范的HTML解析器的Python和PHP实现,以实现与主要桌面Web浏览器的最大兼容性。
如果您不想编程PHP,也可以使用Web服务。通常,我发现这些工具的实用性很少,但这只是我和我的用例。
ScraperWiki的外部界面允许您以想要在Web或您自己的应用程序中使用的形式提取数据。您还可以提取有关任何刮板状态的信息。
最后也是 最不推荐的做法是
,您可以使用正则表达式从HTML提取数据。通常,不建议在HTML上使用正则表达式。
您可以在网上找到与标记匹配的大多数代码片段都很脆弱。在大多数情况下,它们仅适用于非常特殊的HTML。微小的标记更改(例如在某处添加空格,在标签中添加或更改标签中的属性)会使RegEx在编写不正确时失败。在HTML上使用RegEx之前,您应该知道自己在做什么。
HTML解析器已经知道HTML的语法规则。必须为您编写的每个新RegEx教授正则表达式。RegEx在某些情况下还可以,但实际上取决于您的用例。
问题内容: 如何解析HTML / XML并从中提取信息? 问题答案: 本机XML扩展 我更喜欢使用本机XML扩展之一,因为它们与PHP捆绑在一起,通常比所有第3方库都快,并为我提供了所需的所有标记控制权。 DOM DOM扩展使您可以使用PHP 5通过DOM API通过XML文档进行操作。它是W3C的Document Object Model Core Level 3的实现,它是一种平台和语言无关的
Unix 至少设立了三层内部边界来防范恶意用户或有缺陷的程序。一层是内存管理:Unix 用硬件自身的内存管理单元(MMU)来保证各自的进程不会侵入到其它进程的内存地址空间。第二层是为多用户设置的真正权限组——普通用户(非 root用户)的进程未经允许,就不能更改或者读取其他用户的文件。第三层是把涉及关键安全性的功能限制在尽可能小的可信代码块上。在 Unix 中,即使是 shell(系统命令解释器)
问题内容: 我以前使用过XML Parser,尽管它工作正常,但总体上我并不满意,感觉好像我在使用变通办法来处理应该是基本功能的事情。 我最近看到了SimpleXML,但还没有尝试过。有没有更简单的方法?两者都有哪些优点和缺点?您使用过其他解析器吗? 问题答案: 我不得不说,SimpleXML是蛋糕,因为它首先是用C编写的扩展,并且非常快。但第二,解析后的文档采用PHP对象的形式。这样您就可以像“
本文向大家介绍使用PHP的HTML DOMDocument解析HTML,包括了使用PHP的HTML DOMDocument解析HTML的使用技巧和注意事项,需要的朋友参考一下 可以通过以下代码获取<div>标记内的<div>标记内的文本,其中<div>内的class =“ main”内- 示例 输出结果 这将产生以下输出-
原文:http://truffleframework.com/tutorials/robust-smart-contracts-with-openzeppelin 因为智能合约往往涉及金钱,保证Soldity代码没有错误,以及足够的安全是非常根本的。Zeppelin Solutions,一个智能合约审查服务商,已经意识到相关的需求。建立在他们的合约审查经验之上,他们把一些最佳实践整理到了OpenZ
http://oldratlee.com/380/tech/java/robustness-of-implement.html Dubbo 作为远程服务暴露、调用和治理的解决方案,是应用运转的经络,其本身实现健壮性的重要程度是不言而喻的。 这里列出一些 Dubbo 用到的原则和方法。 日志 日志是发现问题、查看问题一个最常用的手段。日志质量往往被忽视,没有日志使用上的明确约定。重视 Log 的使用