用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+MySQL的聊天室设计
Oct 09 PHP
PHP与SQL注入攻击[三]
Apr 17 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
smarty实现多级分类的方法
Dec 05 PHP
8个PHP数组面试题
Jun 23 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
总结PHP内存释放以及垃圾回收
Mar 29 PHP
Yii框架应用组件用法实例分析
May 15 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 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
一个程序下载的管理程序(四)
2006/10/09 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
Yii2中datetime类的使用
2016/12/17 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
jquery控制页面部分刷新的方法
2015/06/24 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
深入浅析JS Function()构造函数
2016/08/22 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
JS动态图片的实现方法完整示例
2020/01/13 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
Python编程中装饰器的使用示例解析
2016/06/20 Python
Python中GeoJson和bokeh-1的使用讲解
2019/01/03 Python
Python列表操作方法详解
2020/02/09 Python
python可以用哪些数据库
2020/06/22 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
大学生简短的自我评价分享
2014/02/20 职场文书
力学专业求职信
2014/07/23 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
党员示范岗材料
2014/12/19 职场文书
幼儿园辞职书
2015/02/26 职场文书
爱心募捐通知范文
2015/04/27 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript