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 相关文章推荐
基于mysql的bbs设计(五)
Oct 09 PHP
php递归列出所有文件和目录的代码
Sep 10 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
PHP读取RSS(Feed)简单实例
Jun 12 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
codeigniter实现get分页的方法
Jul 10 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 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过滤XSS攻击的函数
2013/11/12 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
初步剖析C语言编程中的结构体
2016/01/16 Python
使用python实现生成用户信息
2017/03/20 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
Python绘制热力图示例
2019/09/27 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
4s店总经理岗位职责
2013/12/31 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
交通安全学习心得体会
2016/01/18 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL