用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 n个不重复的随机数生成代码
Jun 23 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 PHP
简单介绍PHP的责任链编程模式
Aug 11 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
PHP对象实例化单例方法
Jan 19 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
PHP如何获取Cookie并实现模拟登录
Jul 16 PHP
PHP日期和时间函数的使用示例详解
Aug 06 PHP
浅谈如何提高PHP代码质量之单元测试
May 28 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
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
python 回溯法模板详解
2020/02/26 Python
解决Django no such table: django_session的问题
2020/04/07 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
南京软件公司的.net程序员笔试题
2014/08/31 面试题
.NET现在共支持多少种语言
2014/02/26 面试题
教师自我评价范文
2013/12/16 职场文书
《春天来了》教学反思
2014/04/07 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书