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 相关文章推荐
10个实用的PHP代码片段
Sep 02 PHP
php 注释规范
Mar 29 PHP
PHP超级全局变量数组小结
Oct 04 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
php将文本文件转换csv输出的方法
Dec 31 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
php实现计算百度地图坐标之间距离的方法
May 05 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
Oct 28 PHP
PHP操作Postgresql封装类与应用完整实例
Apr 24 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
第二节 对象模型 [2]
2006/10/09 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
jquery的map与get方法详解
2013/11/04 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
vue2组件之select2调用的示例代码
2017/10/12 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
python标准库os库的函数介绍
2020/02/12 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
Exception类的常用方法
2012/06/16 面试题
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
数据保密承诺书
2014/06/03 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
交通违章检讨书
2014/09/21 职场文书
2015年技术员工作总结
2015/04/10 职场文书
党性修养心得体会2016
2016/01/21 职场文书
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
win7配置本地ftp服务器的图文教程
2022/08/05 Servers