PHP使用DomDocument抓取HTML内容
有时候会有需要从一个HTML页面来分离出你需要的一些数据来进行处理。 当然自己分析文件肯定可以,但是比较快速且方便的是使用正则表达式或者DOM。 鉴于正则表达式我不熟悉,所以我打算使用DOM来完成。 先谈谈我的需求,我要从一个HTML页面的一个表格中提取数
有时候会有需要从一个HTML页面来分离出你需要的一些数据来进行处理。
当然自己分析文件肯定可以,但是比较快速且方便的是使用正则表达式或者DOM。
鉴于正则表达式我不熟悉,所以我打算使用DOM来完成。
先谈谈我的需求,我要从一个HTML页面的一个表格中提取数据并且将这个数据整理出来加入到MySQL数据库中。
假设目标HTML中我感兴趣的Table有3列,分别是ID,Name,内容。
index.php;
loadHTMLFile($urlTarget ); $htmDoc->normalizeDocument(); //获得到此文档中每一个Table对象; $tables_list = $htmDoc->getElementsByTagName('table'); //测试Table Count; $tables_count = $tables_list->length; foreach ($tables_list as $table) { //得到Table对象的class属性 $tableProp = $table->getAttribute('class'); if ($tableProp == 'target_table_class') { $contentMgr = new ContentManager(); $contentMgr->ParseFromDOMElement($table); //这里myParser就完成了分析动作。然后就可以进行需要的操作了。 //比如写入MySQL。 $contentMgr->SerializeToDB(); } } ?>
ContentManager.php
ContentList = new ArrayObject(); } public function ParseFromDOMElement(DOMElement $table) { $rows_list = $fundsTable->getElementsByTagName('tr'); $rows_length = $rows_list->length; $index = 0; foreach ($rows_list as $row) { $contentInfo = new ContentInfo(); $contentInfo->ParseFromDOMElement($row); $this->ContentList->append ($contentInfo); } //test how many contents parsed. $count = $this->fundsInfoArray->count(); echo $count; } public function SerializeToDB() { //写入数据库,代码略。 } } ?>
contentinfo.php
getElementsByTagName('td'); $cells_length = $row->length; $curCellIdx = 0; foreach ($cells_list as $cell) { switch ($curCellIdx++) { case 0: $this->ID = $cell->nodeValue; break; case 1: $this->Name = $cell->nodeValue; break; case 2: $this->Content = $cell->nodeValue; break; } } } } ?>
一点小心得,DOM中每个Element都可以getAttribute取出属性,这些属性可以区分你分析的DOMObject。
举例来说,比如上述我分析的Target HTML有很多表格,但是我发现目标表格的class属性和其他表格是不一样的。
所以,这个属性就可以来区分我要分析的是哪个表格。
当然更多DOM的东西,大家可以去参考PHP Manual或者是,用IDE(NetBeans7.0就可以)转到类声明,看类接口。
有方法使用说明以及参数说明。可以参考参考。
转载自:http://blog.csdn.net/xyzhaopeng/article/details/6626340
原文地址:PHP使用DomDocument抓取HTML内容, 感谢原作者分享。
上一篇: CSS笔记<三>_html/css_WEB-ITnose
下一篇: CSS 基础语法
推荐阅读
-
php使用curl抓取qq空间的访客信息示例
-
零基础写python爬虫之使用urllib2组件抓取网页内容
-
php识别微信客户端并且使用html静态页面引导用户使用浏览器打开这个页面(代码实现教程)
-
PHP使用HTML5 FormData对象提交表单操作示例
-
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
-
php获取网页标题和内容函数(不包含html标签)
-
Python使用lxml模块和Requests模块抓取HTML页面的教程
-
PHP实现的抓取小说网站内容功能示例
-
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
-
php利用curl抓取新浪微博内容示例