我们有时须要抓取一个网页的内容,但只须要特定部分的信息,常日会用正则来办理,这当然没有问题。
正则是一个通用办理方案,但特定情形下,每每有更大略快 捷的方法。
比如你想查询一个编程方面的问题,当然可以利用Google,但stackoverflow 作为一个专业的编程问答社区,会供应给你更多,更靠谱的答案。

对付html页面,不应该利用正则的缘故原由紧张有3个

1、编写条件表达式比较麻烦

php通用类QueryList一个简略灵巧壮大的通用php采集类 AJAX

尤其对付新手,看到一堆”不知所云”的字符评凑在一起,有种脑袋都要炸了的觉得。
如果要分离的工具没有太明显的特色,正则写起来更是麻烦。

2、效率不高

对付php来说,正则该当是没有办法的办法,能通过字符串函数办理的,就不要劳烦正则了。
用正则去处理一个30多k的文件,效率不敢担保。

3、有phpQuery

如果你利用过jQuery,想获取某个特定元素该当是轻而易举的事情,phpQuery让这成为了可能

phpQuery

在先容QueryList之前,有必要先来先容一下phpQuery。

phpQuery是一个用php实现的类似jQuery的开源项目,可以在做事器端以jQuery的语法形式解析网页元素。

基本上jQuery的选择器都可以用在phpQuery上,phpQuery很强大可以对DOM进行任何繁芜的操作,而接下来要先容的QueryList则相称于phpQuery的子集,发挥它采集方面的强大功能。

QueryList

QueryList是一个基于phpQuery的PHP通用列表采集类,得益于phpQuery,让利用QueryList险些没有任何学习本钱,只要会CSS3选择器就可以轻松利用QueryList了,它让PHP做采集像jQuery选择元素一样大略。

QueryList的几个特点:

1.只有一个核心的API,静态方法Query

2.用jQuery选择器来选择页面元素

3.自带过滤功能,可过滤掉无用的内容

4.支持无限层级嵌套采集

5.采集结果直接以采集规则以列表的形式有序的返回

6.支持扩展

获取QueryList插件

QueryList扩展须要选择性的单独安装,以下是几个插件是默认的演示插件

Request网络操作扩展:

Multi多线程扩展:

Login仿照上岸扩展

demo

<?php

require 'QueryList/vendor/autoload.php';

use QL\QueryList;

$html = <<<STR

<div id=\"大众one\"大众>

<div class=\"大众two\公众>

<a href=\"大众http://querylist.cc\"大众>QueryList官网</a>

<img src=\"大众http://querylist.com/1.jpg\"大众 alt=\"大众这是图片\"大众>

<img src=\公众http://querylist.com/2.jpg\"大众 alt=\"大众这是图片2\"大众>

</div>

<span>其它的<b>一些</b>文本</span>

</div>

STR;

$rules = array(

//采集id为one这个元素里面的纯文本内容

'text' => array('#one','text'),

//采集class为two下面的超链接的链接

'link' => array('.two>a','href'),

//采集class为two下面的第二张图片的链接

'img' => array('.two>img:eq(1)','src'),

//采集span标签中的HTML内容

'other' => array('span','html')

);

$data = QueryList::Query($html,$rules)->data;

print_r($data);

?>

更多API解释,请查看官方API文档。
(https://querylist.cc/)

如果以为本文章对您有所帮助,请为小编点赞。
如有疑问请留言吧。