用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
php 提速工具eAccelerator 配置参数详解
May 16 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
深入解析php中的foreach函数
Aug 31 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
php开发微信支付获取用户地址
Oct 04 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
Dec 23 PHP
PHP共享内存用法实例分析
Feb 12 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 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中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
angular分页指令操作
2017/01/09 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
快速入手Python字符编码
2016/08/03 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
python如何实现代码检查
2019/06/28 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
自我鉴定范文300字
2013/10/01 职场文书
销售经理工作职责范文
2013/12/03 职场文书
会计工作能力自我评价
2015/03/05 职场文书
酒店员工手册范本
2015/05/14 职场文书
结婚仪式主持词
2015/06/29 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
sql注入教程之类型以及提交注入
2021/08/02 MySQL
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS