Php 如何从原始HTML文件中提取数据?

Php 如何从原始HTML文件中提取数据?,php,html,parsing,html-content-extraction,Php,Html,Parsing,Html Content Extraction,是否有一种方法可以从原始html中提取所需的数据,该原始html是使用无id和classes的方式编写的?我的意思是,假设有一个保存的网页(个人资料)的html文件,我想提取像(比如)“爱好”这样的数据。使用PHP是否可以做到这一点?听起来像是在寻找PHP DOM解析器,例如。如果HTML确实没有语义结构,那么提取所需的数据可能有点棘手,但DOM解析器是一个起点。是的,这项技术被称为。如果DOM是有效的html,则可以使用它。如果页面是动态生成的,那么生成器将使用某种结构,根据我的经验,您可以始

是否有一种方法可以从原始html中提取所需的数据,该原始html是使用无
id
classes
的方式编写的?我的意思是,假设有一个保存的网页(个人资料)的html文件,我想提取像(比如)“爱好”这样的数据。使用PHP是否可以做到这一点?

听起来像是在寻找PHP DOM解析器,例如。如果HTML确实没有语义结构,那么提取所需的数据可能有点棘手,但DOM解析器是一个起点。

是的,这项技术被称为。如果DOM是有效的html,则可以使用它。如果页面是动态生成的,那么生成器将使用某种结构,根据我的经验,您可以始终隔离感兴趣的元素

如果DOM不适合您,您可以只使用正则表达式(这是我在编写web爬行器时经常做的)。正则表达式比编写针对DOM继承权的刮取逻辑更有效、更快。因此,您需要打开一些配置文件页面并分析静态结构。然后只需编写一个正则表达式来隔离感兴趣的字段。

使用!我开玩笑,我开玩笑。如果您知道同一页的状态,并且保证格式足够相似,那么您可以尝试编写手动解析器。或者,有很多库将解析html以供使用。我对PHP不太熟悉,不推荐一个,但我相信谷歌搜索会让你走很长的路。我以前在约翰·雷斯格家很走运


最后,如果您需要从一个非语义构造的html页面中获取语义信息,那么您可能注定要以编程的方式完成任务,您最好的选择可能是使用PHP。

有两种方法。第一种方法是使用有效的XHTML清理文档,从而使其成为格式良好的XML,从而可以使用XML工具进行解析

第二个是使用PHP版本的解析器,它试图将HTML5研究应用到当前的浏览器解析例程中。如果它显示在浏览器中,html5lib可以解析它

无论使用哪种方法,最终都会得到一个可以使用xpath表达式查询的DOM对象。由于您的理论文档缺乏语义结构,因此您需要以“第三个p中的第五个跨度”的心态来查看文档部分


更多信息(自链接警告)。

您可以在PHP中使用正则表达式来实现此目的。PHP不是NLP专用语言,但您当然可以像在其他通用语言中一样从数据中提取信息。正则表达式恐怕不适合HTML。它不是一种正则语言。正则表达式工作得很好。你不需要做括号匹配。我已经使用正则表达式插入了数百万个页面。我并不是说它们根本不起作用,但可靠的HTML解析超出了正则表达式的能力。