用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 相关文章推荐
判“新”函数:得到今天与明天的秒数
Oct 09 PHP
phpMyAdmin 安装教程全攻略
Mar 19 PHP
apache rewrite_module模块使用教程
Jan 10 PHP
php二分法在IP地址查询中的应用
Aug 12 PHP
PHP 写文本日志实现代码
May 18 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
php判断当前用户已在别处登录的方法
Jan 06 PHP
php根据日期显示所在星座的方法
Jul 13 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
Centos7安装swoole扩展操作示例
Mar 26 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原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
php事件驱动化设计详解
2016/11/10 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
python下MySQLdb用法实例分析
2015/06/08 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
会计系毕业个人自荐信格式
2013/09/23 职场文书
师范生个人推荐信
2013/11/29 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
工厂无线对讲系统解决方案
2022/02/18 无线电