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 相关文章推荐
web方式ftp
Oct 09 PHP
基于OpenCV的PHP图像人脸识别技术
Oct 11 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
thinkphp3.0 模板中函数的使用
Nov 13 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
Apr 29 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
php使用MySQL保存session会话的方法
Jun 18 PHP
PHP中Http协议post请求参数
Nov 02 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
PHP手机短信验证码实现流程详解
May 17 PHP
tp5框架内使用tp3.2分页的方法分析
May 05 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生成缩略图的代码
2011/01/12 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
详解PHP中的PDO类
2015/07/06 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python装饰器的函数式编程详解
2015/02/27 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
详解重置Django migration的常见方式
2019/02/15 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
Java如何调用外部Exe程序
2015/07/04 面试题
门卫人员岗位职责
2013/12/24 职场文书
致100米运动员广播稿
2014/02/14 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
安全目标管理责任书
2014/07/25 职场文书
督导岗位职责范本
2015/04/10 职场文书