PHP爬虫也很简单!(Querylist类库)

我们有时需要抓取一个网页的内容,但只需要特定部分的信息,通常会用正则来解决,这当然没有问题。正则是一个通用解决方案,但特定情况下,往往有更简单快 捷的方法。比如你想查询一个编程方面的问题,当然可以使用Google,但stackoverflow 作为一个专业的编程问答社区,会提供给你更多,更靠谱的答案。

对于html页面,不应该使用正则的原因主要有3个

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

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

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
  2. 使用简单:用jQuery选择器来选择页面元素
  3. 自带过滤功能,可过滤掉无用的内容
  4. 支持无限层级嵌套采集
  5. 采集结果直接以采集规则以列表的形式有序的返回
  6. 支持扩展

下载安装使用

下载安装使用,请直接移步官方文档进行查看
官方文档

我是用的PHP环境是5.6,手动下载phpQurey和QureryList文件然后引入

文档参考https://www.querylist.cc/docs/guide/v3

 

采集前分析选择器

待采集的目标页面地址:https://www.cnbeta.com/articles/tech/779841.htm ,采集之前需要在浏览器中使用开发者工具来分析要采集的元素的CSS选择器

示例代码

采集代码:

<?php

require 'vendor/autoload.php';

use QL\QueryList;

// 待采集的页面地址
$url = 'https://www.cnbeta.com/articles/tech/779841.htm';

// 采集规则
$rules = [
    // 文章标题
    'title' => ['.title>h1','text'],
    // 发布日期
    'date' => ['.meta>span:eq(0)','text'],
    // 文章内容
    'content' => ['#artibody','html']
];

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

print_r($data);

采集结果:

Array
(Array
(
    [0] => Array
        (
            [title] => GitHub意外宕机 已确认数据存储系统存在问题
            [date] => 2018年10月22日 14:42
            [content] => <p style="text-align: center;"><img src="https://static.cnbetacdn.com/article/2018/1022/82e649adfde2e98.png" alt="github-down-due-to-data-storage-system-issue-523345-2.png"></p>
<p>发稿前,GitHub 已经排除了部分故障。目前似乎只有某些特定地区受到了影响,但欧洲等部分地区仍未完全恢复。</p>
<blockquote>
<p>GitHub 团队表示,数据存储系统是导致本次故障的罪魁祸首。为尽快恢复服务,他们正在努力修复。</p>
<p>过去的几个小时,所有工作都集中在这方面。在此期间,部分用户可能看到不一致的结果。</p>
</blockquote>
<p>今年早些时候,<a data-link="1" href="https://afflnk.microsoft.com/c/1251234/439031/7808" target="_blank">微软</a>宣布以 75 亿美元收购 GitHub 。近日,欧盟委员会认定微软接管 GitHub 不违背反竞争原则,并准予放行。</p>
<p>[编译自:<a href="https://news.softpedia.com/news/github-down-due-to-data-storage-system-issue-523345.shtml" target="_self">Softpedia</a>]</p>
        )

)

更多使用方法请移步官网查看具体文档 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值