用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 相关文章推荐
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
Mar 19 PHP
codeigniter显示所有脚本执行时间的方法
Mar 21 PHP
PHP四种基本排序算法示例
Apr 09 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
php模拟post上传图片实现代码
Jun 24 PHP
php源码 fsockopen获取网页内容实例详解
Sep 24 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
在laravel中使用with实现动态添加where条件
Oct 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
php登陆页的密码处理方式分享
2013/10/14 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
thinkphp分页集成实例
2017/07/24 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
vue生命周期的探索
2019/04/03 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
Python执行时间的几种计算方法
2020/07/31 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
环境工程专业自荐信范文
2014/03/18 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
安全学习心得体会范文
2016/01/18 职场文书
Python实现生活常识解答机器人
2021/06/28 Python
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL