用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动态变静态原理
Nov 25 PHP
PHP安全配置
Dec 06 PHP
PHP合并数组+与array_merge的区别分析
Aug 01 PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
Yii2 批量插入、更新数据实例
Mar 15 PHP
PHP等比例压缩图片的实例代码
Jul 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
iview实现图片上传功能
2020/06/29 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
python的类变量和成员变量用法实例教程
2014/08/25 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
python2 与python3的print区别小结
2018/01/16 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python输出带颜色字体实例方法
2019/09/01 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
创业计划书的主要内容有哪些
2014/01/29 职场文书
法制宣传日活动总结
2014/04/29 职场文书
综合测评个人总结
2015/03/03 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers