转载

PHP爬虫(2)DOM处理

摘要:在 PHP 爬虫( 1 )中详细了介绍了 CURL 抓取 HTML 数据的技术。采集数据处理也是爬虫技术中非常重要的部分。处理 HTML 数据可以用字符串查找,也可以利用正则表达式,但采用 Dom 处理是最高级的方法。

现在我们要抓取中国军网首页“军媒要闻要论”第一条内容,

PHP爬虫(2)DOM处理

通过浏览器工具查看网页元素,通过 console 获取数据。通过下图我们可以看到,在浏览器中我们可以方便调用 Jquery dom 查找函数,轻松找到数据, PHP 中是否也有这样的工具可以很方便的处理 DOM

PHP爬虫(2)DOM处理

github 上查找 php dom parse ,我们找到 sunra/php-simple-html-dom-parser ,使用用户还挺多的。下面我们介绍如何使用 PhpDomParse 组件,分别介绍直接引用、 composer ThinkPhp 中如何使用。

PHP爬虫(2)DOM处理

1.直接引用

首选下载组件文件夹,在当前工程目录中执行

git clone https://github.com/sunra/php-simple-html-dom-parser.git

此时,工程目录下就会多出 php-simpple-html-dom-parser 文件夹,文件夹目录如下图

PHP爬虫(2)DOM处理

引用 HtmlDomParaer.php

<?php  include "./php-simple-html-dom-parser/Src/Sunra/PhpSimple/HtmlDomParser.php";  use Sunra/PhpSimple/HtmlDomParser;  $url = "http://www.81.cn";  $dom = HtmlDomParser::file_get_html( $url );  $u = $dom->find("#JMYWYL dt",0);  $title = $u ->find('a',0);  echo $title->innertext; ?> 

2.Composer 调用方法

在工程目录下安装 Composer.phar ,创建 composer.json 文件,

{     "require": {         "sunra/php-simple-html-dom-parser": "v1.5.0"     } }

运行, php compose.phar install

Composer 会根据 composer.json 内容,下载需要的文件,安装成功之后,工程文件夹如下,

PHP爬虫(2)DOM处理

代码如下,系统会自动加载 /Sunra/PhpSimple/HtmlDomParse

<?php  require __DIR__ . '/vendor/autoload.php';  $url = "http://www.81.cn";  $dom = /Sunra/PhpSimple/HtmlDomParser::file_get_html( $url );  $u = $dom->find("#JMYWYL dt",0);  $title = $u ->find('a',0);  echo $title->innertext; ?> 

3、thinkphp 框架

笔者日常也是使用 TP 框架的,也许有的读者没在 TP 中引入其他框架。 TP 提供了进入框架的机制,我们将 Sunra 文件夹放在“安装路径 -->ThinkPHP->Library->Vendor ”目录中,结构如下图所示,

PHP爬虫(2)DOM处理

工程代码如下

class IndexController extends Controller {  public function index(){ }  public function dom()  {   Vendor('Sunra.PhpSimple.HtmlDomParser');   $url = "http://www.81.cn";   //$dom = /Sunra/PhpSimple/HtmlDomParser::file_get_html( $url );   $dom =file_get_html( $url );   $u = $dom->find("#JMYWYL dt",0);   $title = $u ->find('a',0);   echo $title->innertext;  } } 

附录

php composer.phar install,出现下列错误,

SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

解决办法,

(1)wget http://curl.haxx.se/ca/cacert.pem

(2)修改 php.ini ,添加

openssl.cafile="/opt/lampp/cacert.pem"

正文到此结束
Loading...