phpQuery的使用
前言
为什么使用phpQuery
- phpQuery是基于php5新添加的DOMDocument。而DOMDocument则是专门用来处理html/xml。它提供了强大的xpath选择器及其他很多html/xml操作函数,使得处理html/xml起来非常方便。
- 尤其对于新手,看到一堆”不知所云”的字符评凑在一起,有种脑袋都要炸了的感觉。如果要分离的对象没有太明显的特征,正则写起来更是麻烦。
- 学习成本低,jQuery是PHP程序员的标配,那么懂jQuery的话,是可以无缝衔接的,学习成本几乎为0。选择器,节点,节点信息,over
Demo
<?php
require("phpQuery.php");//导入phpQuery库
$html = phpQuery::newDocumentFile("https://segmentfault.com/tags");
$hrefList = pq(".tag"); //获取标签为a的所有对象$(".tag") foreach ($hrefList as $href) {
//echo pq($href)->attr('date-original-title').<br>;
echo $href->getAttribute("data-original-title"),"<br>";
}
使用
官方文档地址:https://code.google.com/archive/p/phpquery/wikis
一、phpQuery的hello word!
下面简单举例:
include 'phpQuery.php';
phpQuery::newDocumentFile('http://www.phper.org.cn');
echo pq("title")->text(); // 获取网页标题
echo pq("div#header")->html(); // 获取id为header的div的html内容
上例中第一行引入phpQuery.PHP文件,
第二行通过newDocumentFile加载一个文件,
第三行通过pq()函数获取title标签的文本内容,
第四行获取id为header的div标签所包含的HTML内容。
主要做了两个动作,即加载文件和读取文件内容。
二、载入文档(loading documents)
加载文档主要通过phpQuery::newDocument来进行操作,其作用是使得phpQuery可以在服务器预先读取到指定的文件或文本内容。
主要的方法包括:
phpQuery::newDocument($html, $contentType = null)
phpQuery::newDocumentFile($file, $contentType = null)
phpQuery::newDocumentHTML($html, $charset = ‘utf-8′)
phpQuery::newDocumentXHTML($html, $charset = ‘utf-8′)
phpQuery::newDocumentXML($html, $charset = ‘utf-8′)
phpQuery::newDocumentPHP($html, $contentType = null)
phpQuery::newDocumentFileHTML($file, $charset = ‘utf-8′)
phpQuery::newDocumentFileXHTML($file, $charset = ‘utf-8′)
phpQuery::newDocumentFileXML($file, $charset = ‘utf-8′)
phpQuery::newDocumentFilePHP($file, $contentType)
三、pq()函数用法
pq()函数的用法是phpQuery的重点,主要分两部分:即选择器和过滤器
【选择器】
要了解phpQuery选择器的用法,建议先了解jQuery的语法
最常用的语法包括有:
pq('#id'):即以#号开头的ID选择器,用于选择已知ID的容器所包括的内容
pq('.classname'):即以.开头的class选择器,用于选择class匹配的容器内容
pq('parent > child'):选择指定层次结构的容器内容,如:pq('.main > p')用于选择class=main容器的所有p标签
更多的语法请参考jQuery手册
【过滤器】
主要包括::first,:last,:not,:even,:odd,:eq(index),:gt(index),:lt(index),:header,:animated等
如:
pq('p:last'):用于选择最后一个p标签
pq('tr:even'):用于选择表格中偶然行
【使用phpQuery对象对DOM节点进行原型化操作】
foreach(pq('li') as $li) // $li是纯DOM节点, 将它变为phpQuery对象: pq($li);
四、phpQuery连贯操作
pq()函数返回的结果是一个phpQuery对象,可以对返回结果继续进行后续的操作,例如:
pq('a')->attr('href', 'newVal')->removeClass('className')->html('newHtml')->...
详情请查阅jQuery相关资料,用法基本一致,只需要注意.与->的区别即可。
phpQuery的使用的更多相关文章
- Snoopy+phpquery采集demo
用phpquery类,写了个采集的demo,以 某网贷平台的 一个列表为例,我们要采集该平台下面的 各平台名称,结构树如下 include 'phpQuery.php'; phpQuery::newD ...
- php+phpquery简易爬虫抓取京东商品分类
这是一个简单的php加phpquery实现抓取京东商品分类页内容的简易爬虫.phpquery可以非常简单地帮助你抽取想要的html内容,phpquery和jquery非常类似,可以说是几乎一样:如果你 ...
- phpQuery—基于jQuery的PHP实现
转载于:http://www.cnblogs.com/in-loading/archive/2012/04/11/2442697.html Query的选择器之强大是有目共睹的,phpQuery 让p ...
- curl模拟浏览器进行phpQuery抓取数据
报Warning: file_get_contents(http://www.dianping.com/shop/8042874) [function.file-get-contents]: fail ...
- phpQuery用法
了解phpQuery使用前了温习jquery.js的选择用法 jquery选择器,还有一个衍生产品QueryList 例: include 'phpQuery.php'; phpQuery::newD ...
- phpQuery轻松采集网页内容
原文地址:phpQuery轻松采集网页内容作者:陌上花开 phpQuery是一个基于PHP的服务端开源项目,它可以让PHP开发人员轻松处理DOM文档内容,比如获取某新闻网站的头条信息.更有意思的是,它 ...
- 用phpQuery像jquery一样解析html代码
简介 如何在php中方便地解析html代码,估计是每个phper都会遇到的问题.用phpQuery就可以让php处理html代码像jQuery一样方便. 项目地址:https://code.googl ...
- phpquery笔记
下载phpquery包 require('phpQuery/phpQuery.php');//加载 for($i=1168;$i<=10000;$i++){ phpQuery::newDocum ...
- 使用phpQuery实现批量文件处理
能够将置顶文夹下的指定类型文件进行处理 <?php header('Content-Type:text/html;Charset=utf-8'); include './phpQuery/php ...
- phpQuery 无法解析 html 结构
有时候解析一段 HTML 代码时 phpQuery 无法解析原因: 可能是缺少类似下面的 meta 信息,在带解析的字符串任意位置添上即可 : <meta http-equiv="Co ...
随机推荐
- Java常用API——Arrays工具类
介绍:Arrays工具类提供了一些可以直接操作数组的方法,以下是一些常用方法: int binarySearch(type[] a, type key):要求数组a元素升序排列,使用二分法搜索key的 ...
- Codeforce 977E Cyclic Components
dfs判断图的连通块数量~ #include<cstdio> #include<algorithm> #include<vector> #include<cs ...
- Golang redis 学习指南
安装 我使用的是 https://github.com/go-redis/r... 这个 golang 客户端, 因此安装方式如下: go get gopkg.in/redis.v4 接着在代码中导入 ...
- XCOJ1250: 语言战争
1250: 语言战争 时间限制: 1 Sec 内存限制: 64 MB提交: 203 解决: 46 标签提交统计讨论版 题目描述 llc和yrc语言的优劣一直都是大家所争论的焦点,但它们之间最大的区 ...
- C语言-错误处理
标记程序的运行状态和控制主要有以下几种:break/continue/return/参数的返回值/exit(int n)_exit() atexit((*p)(参数列表)): 1 break:用在开关 ...
- 运营商如何关闭2G、3G网络?这事儿得从小灵通说起
5G时代即将全面开启,主流声音是对未来的无限畅想--5G将带来翻天覆地的变化.不过凡事都有利弊两面性,5G作为新生事物固然大有可为,但不可避免地会对旧事物造成巨大冲击.除了会影响很多跟不上潮流发展的行 ...
- 修改Linux的默认编码
Windows的默认编码为GBK,Linux的默认编码为UTF-8.在Windows下编辑的中文,在Linux下显示为乱码.为了解决此问题,修改Linux的默认编码为GBK.方法如下: 方法1: vi ...
- redhat 7.6 流量监控命令、软件(1) ethstatus
1. 查看1个月内流量,只保留一个月的流量 命令: sar -n DEV -f /var/log/sa/sa26 RX代表进来的流量,TX代表出去的流量 2.安装查看实时流量软件eth ...
- 解决:使用 swiper 自动轮播图片,当拖动过 swiper 内的内容时,导致不继续自动轮播
版本为1.3 当使用了 swiper 后: var mySwiper = new Swiper('.banner .swiper-container', { autoplay: 3000, loop: ...
- 牛客网Sql
牛客网Sql: 1.查询最晚入职的员工信息 select * from employees where hire_date =(select max(hire_date) from employee ...