TP5框架使用QueryList采集框架爬小说操作示例


Posted in PHP onMarch 26, 2020

本文实例讲述了TP5框架使用QueryList采集框架爬小说操作。分享给大家供大家参考,具体如下:

最近想写一个小说网站,就去搜资料,搜出来TP5可以使用QueryList采集框架去爬小说,这里我来给大家详解如何用QueryList去爬小说。
#首先应该下载TP5框架,然后在extend里面建立一个文件夹命名为QL,再去官网下载QueryList,然后把phpQuery.php 和 QueryList.php 两个文件放在QL文件夹下,如图:
TP5框架使用QueryList采集框架爬小说操作示例
##在QueryList.php里面加上命名空间:

namespace QL;
require ‘phpQuery.php';

use phpQuery,Exception,ReflectionClass;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Iterator,Countable,ArrayAccess;//使用phpQuuery接口

#准备工作做好了下来开始采集小说(我们这里以https://www.17k.com/这个网站的免费小说为例)

##先找到你要采集的小说的目录页面的url作为采集url

##再在url前面加上 view-source: 查看他的源码,找到包含所有章节url的class属性,写好采集规则,执行语句进行采集

##采集他的章节名和每一章节的url,因为url采集下来没有域名,需要用正则表达式加上https://www.17k.com 然后采用for循环去一个一个采集每一章节的内容

##最后再将采集到的章节名与章节内容存入数据库

直接上代码:

<?php
namespace app\index\Controller;
use think\Controller;
use QL\QueryList;
 
class Xiaoshuo extends Controller
{
  public function index()
  {
    //采集目标
    //$url = 'https://www.17k.com/list/3032846.html?offset=';
     $url = 'https://www.17k.com/list/3041226.html?offset=';
    //采集规则
    $rules = array(
          'title'=>array('.ellipsis','text'),//获取书每个章节名
          'link'=>array('.Volume a','href','-.folding -copy -a'),//获取每个章节链接
        );
    //开始采集
    $data = QueryList::Query($url,$rules)->data;
    //var_dump($data);
    //求数组长度
     $j = count($data);
    if($data)
    {
      for($i=0;$i<=$j-1;$i++)
      {
       $values = ['title'=>$data[$i]['title'],'link'=>$data[$i+1]['link']];
       $_POST['url']=$data[$i+1]['link'];
       if (!preg_match("/^(http|ftp):/", $_POST['url']))//给链接加上域名头
        {
         $url1 = 'https://www.17k.com'.$_POST['url'];
        }
       $rules1 = array(
          'novel'=>array('.p','text','-li -a'),
          );
       $data1 = QueryList::Query($url1,$rules1)->data;
       //var_dump($data1);
       $values1 = ['title'=>$data[$i]['title'],'novel'=>$data1[0]['novel']];//将章节名、内容插入数据库
       $data2 = \think\Db::name('novel6')->insert($values1); 
      }
    }
    
  }
}

我们来打印一下他的章节名和章节内容:
TP5框架使用QueryList采集框架爬小说操作示例TP5框架使用QueryList采集框架爬小说操作示例注:1.class属性一定要找对
2.采集下来 $data 的第一个数组的link不是第一章的url,下一个才是第一章的,所以 data[ data[" role="presentation" style="position: relative;">data[i+1][‘link'] 是他第i章的url

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
十天学会php之第一天
Oct 09 PHP
php 分页原理详解
Aug 21 PHP
php实现多张图片上传加水印技巧
Apr 18 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
CI框架集成Smarty的方法分析
May 17 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 #PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 #PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 #PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 #PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 #PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 #PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 #PHP
You might like
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
JavaScript高级程序设计
2006/12/29 Javascript
Aptana调试javascript图解教程
2009/11/30 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
JavaScript中判断数据类型的方法总结
2016/05/24 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
秘书岗位职责
2013/11/18 职场文书
最新的咖啡店创业计划书
2013/12/30 职场文书
矿泉水广告词
2014/03/20 职场文书
百日安全活动总结
2014/05/04 职场文书
企业员工薪酬方案
2014/06/04 职场文书
责任书范本
2014/08/25 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
法定代表人资格证明书
2015/06/18 职场文书
会计岗位工作总结
2015/08/12 职场文书
Python List remove()实例用法详解
2021/08/02 Python