使用phpQuery采集网页的方法

phpQuery是一个基于PHP的服务端开源项目,它可以让PHP开发人员轻松处理DOM文档内容,比如获取某新闻网站的头条信息。更有意思的是,它采用了jQuery的思想,你可以像使用jQuery一样处理页面内容,获取你想要的页面信息。
采集头条
先看一实例,现在我要采集新浪网国内新闻的头条,代码如下:


代码如下:

include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('http://www.jb51.net');
echo pq(".blkTop h1:eq(0)")->html();

简单的三行代码,就可以获取头条内容。首先在程序中包含phpQuery.php核心程序,然后调用读取目标网页,最后输出对应标签下的内容。
pq()是一个功能强大的方法,跟jQuery的$()如出一辙,jQuery的选择器基本上都能使用在phpQuery上,只要把“.”变成“->”。如上例中,pq(“.blkTop h1:eq(0)”)抓取了页面class属性为blkTop的DIV元素,并找到该DIV内部的第一个h1标签,然后用html()方法获取h1标签里的内容(带html标签),也就是我们要获取的头条信息,如果使用text()方法,则只获取头条的文本内容。当然要使用好phpQuery,关键是要找对文档中对应内容的节点。
采集文章列表
下面再来看一个例子,获取helloweba.com网站的blog列表,请看代码:


代码如下:

include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('http://www.jb51.net');
$artlist = pq(".blog_li");
foreach($artlist as $li){
   echo pq($li)->find('h2')->html()."";
}

通过循环列表中的DIV,找出文章标题并输出,就是这么简单。
解析XML文档
假设现在有一个这样的test.xml文档:


代码如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <contact>
     <name>张三</name>
     <age>22</age>
  </contact>
  <contact>
     <name>王五</name>
     <age>18</age>
  </contact>
</root>

现在我要获取名字为张三的联系人的年龄,代码如下:


代码如下:

include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('test.xml');
echo pq('contact > age:eq(0)');
结果输出:22

像jQuery一样,精准查找文档节点,输出节点下的内容,解析一个XML文档就是这么简单。现在你不必为采集网站内容而使用那些头疼的正则算法、内容替换等繁琐的代码了,有了phpQuery,一切就变得轻松多了。
phpquery项目官网地址:http://code.google.com/p/phpquery/

(0)

相关推荐

  • 一个基于phpQuery的php通用采集类分享

    一.采集类源码 复制代码 代码如下: <?php  /**  *通用列表采集类  *版本V1.3  *作者:JAE  */    require_once '../phpQuery/phpQuery/phpQuery.php';    class QueryList{ private $pageURL;         private $regArr = array();         public $jsonArr = array();         private $regRange; 

  • phpQuery让php处理html代码像jQuery一样方便

    简介 如何在php中方便地解析html代码,估计是每个phper都会遇到的问题.用phpQuery就可以让php处理html代码像jQuery一样方便. 项目地址:https://code.google.com/p/phpquery/ github地址:https://github.com/TobiaszCudnik/phpquery DEMO 下载库文件:https://code.google.com/p/phpquery/downloads/list 我下的是onefile版:phpQuer

  • phpQuery占用内存过多的处理方法

    phpQuery是一个用php实现的类似jQuery的开源项目,可以在服务器端以jQuery的语法形式解析网页元素. 相对于正则或其它方式匹配网页方式,phpQuery使用起来要方便的多.在使用phpQuery采集网页时,遇到一个问题:在处理大量网页之后,phpQuery占用的内存数量非常惊人(很快就超过了1G),比如这段代码: 复制代码 代码如下: while (true) {    phpQuery::newDocumentFile($htmlFile);    // 处理网页元素...  

  • 使用phpQuery采集网页的方法

    phpQuery是一个基于PHP的服务端开源项目,它可以让PHP开发人员轻松处理DOM文档内容,比如获取某新闻网站的头条信息.更有意思的是,它采用了jQuery的思想,你可以像使用jQuery一样处理页面内容,获取你想要的页面信息.采集头条先看一实例,现在我要采集新浪网国内新闻的头条,代码如下: 复制代码 代码如下: include 'phpQuery/phpQuery.php'; phpQuery::newDocumentFile('http://www.jb51.net'); echo pq

  • phpQuery采集网页实现代码实例

    前言   平时开发中可能遇到一个问题.采集网页,小偷程序等等.各种花式秀正则的话,虽然能体现出geek,但是我觉得做事却不够优雅.采集到的网页说白了也是DOM,jQuery各种优雅地获取节点.幸好,有这个类库,帮我们解决了这个,那就是phpQuery. 为什么使用phpQuery phpQuery是基于php5新添加的DOMDocument.而DOMDocument则是专门用来处理html/xml.它提供了强大的xpath选择器及其他很多html/xml操作函数,使得处理html/xml起来非常

  • 非常好的网站生成静态页面防采集策略与方法

    目前防采集的方法有很多种,先介绍一下常见防采集策略方法和它的弊端及采集对策:  一.判断一个IP在一定时间内对本站页面的访问次数,如果明显超过了正常人浏览速度,就拒绝此IP访问 弊端:     1.此方法只适用于动态页面,如:asp\jsp\php等...静态页面无法判断某个IP一定时间访问本站页面的次数.     2.此方法会严重影响搜索引擎蜘蛛对其收录,因为搜索引擎蜘蛛收录时,浏览速度都会比较快而且是多线程.此方法也会拒绝搜索引擎蜘蛛收录站内文件     采集对策:只能放慢采集速度,或者不采

  • python使用自定义user-agent抓取网页的方法

    本文实例讲述了python使用自定义user-agent抓取网页的方法.分享给大家供大家参考.具体如下: 下面python代码通过urllib2抓取指定的url的内容,并且使用自定义的user-agent,可防止网站屏蔽采集器 import urllib2 req = urllib2.Request('http://192.168.1.2/') req.add_header('User-agent', 'Mozilla 5.10') res = urllib2.urlopen(req) html

  • Go语言通过http抓取网页的方法

    本文实例讲述了Go语言通过http抓取网页的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (  "fmt"  "log"  "net/http"  "net/url"  "io/ioutil" ) //指定代理ip func getTransportFieldURL(proxy_addr *string) (transport *http.Tr

  • php从csv文件读取数据并输出到网页的方法

    本文实例讲述了php从csv文件读取数据并输出到网页的方法.分享给大家供大家参考.具体实现方法如下: <?php $fp = fopen('sample.csv','r') or die("can't open file"); print "<table>\n"; while($csv_line = fgetcsv($fp)) { print '<tr>'; for ($i = 0, $j = count($csv_line); $i

  • PHP读取、解析eml文件及生成网页的方法示例

    本文实例讲述了PHP读取.解析eml文件及生成网页的方法.分享给大家供大家参考,具体如下: php读取eml实例,本实例可以将导出eml文件解析成正文,并且可以将附件保存到服务器.不多说直接贴代码了. <?php // Author: richard e42083458@163.com // gets parameters error_reporting(E_ALL ^ (E_WARNING|E_NOTICE)); header("Content-type: text/html; char

  • python实现自动登录人人网并采集信息的方法

    本文实例讲述了python实现自动登录人人网并采集信息的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # -*- coding: utf-8 -*- import sys import re import urllib2 import urllib import cookielib class Renren(object): def __init__(self): self.name = self.pwd = self.content = self.doma

  • C#网页信息采集方法汇总

    本文实例总结了三种常用的C#网页信息采集方法.分享给大家供大家参考.具体实现方法如下: 一.通过HttpWebResponse 来获取 复制代码 代码如下: public static string CheckTeamSiteUrl(string url)  {          string response = "";          HttpWebResponse httpResponse = null;            //assert: user have acces

  • PHP抓取及分析网页的方法详解

    本文实例讲述了PHP抓取及分析网页的方法.分享给大家供大家参考,具体如下: 抓取和分析一个文件是非常简单的事.这个教程将通过一个例子带领你一步一步地去实现它.让我们开始吧! 首先,我首必须决定我们将抓取的URL地址.可以通过在脚本中设定或通过$QUERY_STRING传递.为了简单起见,让我们将变量直接设在脚本中. <?php $url = 'http://www.php.net'; ?> 第二步,我们抓取指定文件,并且通过file()函数将它存在一个数组里. <?php $url =

随机推荐