用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 is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
深入理解php的MySQL连接类
Jun 07 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
Jun 24 PHP
解析PHP的session过期设置
Jun 29 PHP
页面利用渐进式JPEG来提升用户体验度
Dec 01 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
Apr 08 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
laravel框架上传图片实现实时预览功能
Oct 14 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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操作xml入门之xml标签的属性分析
2015/01/23 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
js仿360开机效果
2019/12/26 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
JS实现页面侧边栏效果探究
2021/01/08 Javascript
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python生成圆形图片的方法
2020/03/25 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
python tkinter组件摆放方式详解
2019/09/16 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
高中生期末评语大全
2014/01/28 职场文书
超市总经理岗位职责
2014/02/02 职场文书
公司端午节活动方案
2014/02/04 职场文书
继承公证书样本
2014/04/04 职场文书
高中教师评语大全
2014/04/25 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python