有没有办法从原始html中提取所需的数据,这些html是在没有IDs
和classes
的情况下非语义编写的?我的意思是,假设有一个保存的网页(个人资料)的html文件,我想提取像(比如说)'爱好'这样的数据。是否可以使用PHP执行此操作?
答案 0 :(得分:3)
BeautifulSoup http://www.crummy.com/software/BeautifulSoup/,也许?
答案 1 :(得分:1)
听起来像是在寻找PHP DOM解析器,例如this one。如果HTML真的没有语义结构,那么提取你需要的数据可能有点棘手,但是DOM解析器是起点。
答案 2 :(得分:1)
是的,该技术称为web scraping。如果它的有效html可以使用DOM。如果页面是动态生成的,那么生成器会使用一些结构,根据我的经验,你总是可以隔离感兴趣的元素。
如果DOM不适合你,你可以使用正则表达式(这就是我在编写web-spiders时常常做的事情)。正则表达式更有效,更快速地编写针对DOM层次结构的抓取逻辑。因此,您需要打开一些配置文件页面并分析静态结构。然后只需编写一个正则表达式来隔离感兴趣的字段。
答案 3 :(得分:1)
使用regex!我小子,我小子。如果您知道同一页面的状态,并且保证格式足够相似,那么您可以尝试编写手动解析器。或者,有很多库将解析html。我不熟悉PHP推荐一个,但我相信一些谷歌可能会带你走很长的路。我之前和John Resig的pure javascript HTML parser一样幸运。
在一天结束时,如果您需要来自未在语义上构建的html页面的语义信息,您可能会以编程方式注定失败,最好的选择可能是mechanical turk。
答案 4 :(得分:0)
使用PHP有两种方法。第一种是使用the tidy extension清理文档,因此它是有效的XHTML,因此格式良好的XML,因此可以使用XML工具进行解析。
第二种是使用html5lib解析器的PHP版本,它试图将HTML5研究实现到当前的浏览器解析例程中。如果它显示在浏览器中,html5lib可以解析它。
使用任何一种方法,您最终都会得到一个可以使用xpath表达式查询的DOM对象。由于您的理论文档缺乏语义结构,因此您需要从“第3页内部的第5跨度”思维模式中获取文档部分。
更多信息here(自我链接警告)。