使用phpQuery轻松采集网页内容

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

采集头条

先看一实例,现在我要采集新浪网国内新闻的头条,代码如下:

include ‘phpQuery/phpQuery.php‘;
phpQuery::newDocumentFile(‘http://news.sina.com.cn/china‘);
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.helloweba.com/blog.html‘);
$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,一切就变得轻松多了。

项目官网地址:http://code.google.com/p/phpquery/

时间: 2024-08-04 22:31:51

使用phpQuery轻松采集网页内容的相关文章

ThinkPHP Http工具类(用于远程采集 远程下载) phpSimpleHtmlDom采集类库_Jquery筛选方式 使用phpQuery轻松采集网页内容

[php]代码库 view sourceprint? <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (c) 200

java获得采集网页内容的方法小结

      为了写一个java的采集程序,从网上学习到3种方法可以获取单个网页内容的方法,主要是运用到是java IO流方面的知识,对其不熟悉,因此写个小结. import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; impo

杂记 使用Python采集网页内容

BeautifulSoup  一个分析.处理DOM树的类库. 采集所有img标签的title属性的内容 # -*- coding: utf-8 -*- from urllib.request import urlopen from urllib.error import HTTPError from bs4 import BeautifulSoup url = "http://qa.beloved999.com/category/view?id=2" url = "http:

QueryList 来做采集

示例代码 先来感受一下使用 QueryList 来做采集是什么样子. 1 采集百度搜索结果列表的标题和链接.大理石平台价格 采集代码: $data = QueryList::get('https://www.baidu.com/s?wd=QueryList') // 设置采集规则 ->rules([ 'title'=>array('h3','text'), 'link'=>array('h3>a','href') ]) ->queryData(); print_r($data

phpjquery抓取网页内容

phpquery抓取网页内容,以下都经过测试,不过phpquery你最好用我上传的,别的不保证,其实我也是下载的. include 'phpQuery/phpQuery.php'; /** phpQuery::newDocumentFile("http://www.helloweba.com/blog.html"); $artlist = pq(".blog_li"); foreach($artlist as $li){ echo pq($li)->find(

简单的java采集程序二

继[简单的java采集程序],这里将完成对整个网站的号码段的采集任务. [使用预编译+批处理采集网页内容至数据库表中]          在之前我们用statement类来创建sql语句的执行对象,以实现插入字段到数据库的操作,但由于插入的数据量较大,如果继续用statement操作话,会很耗时间,我们用其子类PreparedStatement来进行操作.      PreparedStatement 可以实现sql语句的预编译,我们只需要通过其setString()方法传参即可,这样不仅效率提

简单java采集程序

[目标任务]通过该网站采集全国的手机号码段至数据库表中 [完成过程] 1.初涉正则表达式,学会写简单的正则表达式 2.获取单个网页内容,学会java中基本的IO流 3.将获取数据插入mysql数据库表中,掌握基本的JDBC编程. 5.通过url拼接获取每一个城市的完整url 6.采集整个网站的号码段,并使用批处理+预编译批量插入数据库表中 7.使用StringBuilder进行优化提速 [数据库表]注意如果是在cmd命令下建表的话,字段名称不需要加引号 create table number_s

记录采集数据经过

先看成果 大概过程: 使用jQuery获取页面中呈现的大批内容 能通过页面一次性获得所需大量数据的,通过jQuery获取原数据,并一条条显示在console面板中.每条我是直接拼接成sql显示. 打开chrome,进到地址http://www.autozi.com/carBrandLetter/.html.按F12点console面板.粘贴下面的内容 $("tr.event_scroll").each(function(i){ var _this = $(this); // 奥迪,宝马

(phpQuery)对网站产品信息采集代码的优化

a.要采集的源链接: http://www.prospecbio.com/Recombinant_Proteins/ b.具体要求: 接下来就是采集代码的编写. 对于:b-(1)中,代码如下: <?php header('Content-Type:text/html;charset=UTF-8'); include './phpQuery/phpQuery.php'; set_time_limit(10000); $url = "http://www.prospecbio.com/Horm