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写的小东西
Dec 06 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
Mar 26 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
PHP命令Command模式用法实例分析
Aug 08 PHP
PHP getDocNamespaces()函数讲解
Feb 03 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
Apr 23 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
Zend Framework入门应用实例详解
2016/12/11 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
php实现等比例压缩图片
2018/07/26 PHP
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
编写Python的web框架中的Model的教程
2015/04/29 Python
Python判断Abundant Number的方法
2015/06/15 Python
详解Django中的权限和组以及消息
2015/07/23 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
机械电子工程专业自荐书
2014/06/10 职场文书
论文答谢词
2015/01/20 职场文书
写给父母的感谢信
2015/01/22 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
详解python网络进程
2021/06/15 Python
python turtle绘图命令及案例
2021/11/23 Python
springboot读取nacos配置文件
2022/05/20 Java/Android