用php解析html的实现代码


Posted in PHP onAugust 08, 2011

最近想用php写一个爬虫,就需要解析html,在sourceforge上找到一个项目叫做PHP Simple HTML DOM Parser,它可以以类似jQuery的方式通过css选择器来返回指定的DOM元素,功能十分强大。
首先要在程序的开始引入simple_html_dom.php这个文件

include_once('simple_html_dom.php');

PHP Simple HTML DOM Parser提供了3种方式来创建DOM对象
// Create a DOM object from a string 
$html = str_get_html('<html><body>Hello!</body></html>'); 
// Create a DOM object from a URL 
$html = file_get_html('http://www.google.com/'); 
// Create a DOM object from a HTML file 
$html = file_get_html('test.htm');

得到DOM对象后就可以进行各种操作了
// Find all anchors, returns a array of element objects 
$ret = $html->find('a'); 
// Find (N)th anchor, returns element object or null if not found (zero based) 
$ret = $html->find('a', 0); 
// Find lastest anchor, returns element object or null if not found (zero based) 
$ret = $html->find('a', -1); 
// Find all <div> with the id attribute 
$ret = $html->find('div[id]'); 
// Find all <div> which attribute id=foo 
$ret = $html->find('div[id=foo]');

这里可以使用各种css选择器,就像在jQuery中进行DOM操作一样,非常方便。此外,还有两个特殊的属性可以得到文本和注释的内容
// Find all text blocks 
$es = $html->find('text'); 
// Find all comment (<!--...-->) blocks 
$es = $html->find('comment');

当然,还是类似于jQuery,PHP Simple HTML DOM Parser也支持链式操作,以及各种访问DOM元素的简单方法
// Example 
echo $html->find("#div1", 0)->children(1)->children(1)->children(2)->id; 
// or 
echo $html->getElementById("div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');
PHP 相关文章推荐
一个php作的文本留言本的例子(六)
Oct 09 PHP
Smarty模板快速入门
Jan 04 PHP
PHP的基本常识小结
Jul 05 PHP
php制作文本式留言板
Mar 18 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
Aug 21 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
Aug 17 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 PHP
php中设置多级目录session的问题
Aug 08 #PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 #PHP
ThinkPHP与PHPExcel冲突解决方法
Aug 08 #PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 #PHP
php Smarty初体验二 获取配置信息
Aug 08 #PHP
php中Smarty模板初体验
Aug 08 #PHP
PHP 防注入函数(格式化数据)
Aug 08 #PHP
You might like
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
PHP与SQL注入攻击[二]
2007/04/17 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
js实现随机数字字母验证码
2017/06/19 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
Vue实现简易计算器
2020/02/25 Javascript
python对离散变量的one-hot编码方法
2018/07/11 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
python中altair可视化库实例用法
2021/01/26 Python
What is view? why do we have view?
2012/06/22 面试题
安全资料员岗位职责
2013/12/14 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
大学生创业事迹材料
2014/12/30 职场文书
医德医风自我评价2015
2015/03/03 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs