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面向对象分析设计的61条军规小结
Jul 17 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
PHP中CURL方法curl_setopt()函数的参数分享
Jan 19 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
php实现base64图片上传方式实例代码
Feb 22 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 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
德生9700DX电路分析
2021/03/02 无线电
PHP学习之整理字符串
2011/04/17 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
js一组验证函数
2008/12/20 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
JS与C#编码解码
2013/12/03 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
详解jQuery选择器
2016/12/21 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
kafka-python批量发送数据的实例
2018/12/27 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
基于python操作ES实例详解
2019/11/16 Python
python爬虫 requests-html的使用
2020/11/30 Python
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
实习生矿工检讨书
2014/10/13 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
战马观后感
2015/06/08 职场文书
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
Nginx速查手册及常见问题
2022/04/07 Servers