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自定义函数返回多个值
Nov 26 PHP
生成php程序的php代码
Apr 07 PHP
php操作sqlserver关于时间日期读取的小小见解
Nov 29 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
Dec 08 PHP
php中通过curl smtp发送邮件
Jun 05 PHP
php检测图片木马多进制编程实践
Apr 11 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
PHP准确取得服务器IP地址的方法
Jun 02 PHP
实例讲解php数据访问
May 09 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
May 04 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 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中this,self,parent的区别详解
2013/06/08 PHP
提高php编程效率技巧
2015/08/13 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
js查错流程归纳
2012/05/04 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
javascript中的面向对象
2017/03/30 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
前端性能优化建议
2020/09/17 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
python中的字符串内部换行方法
2018/07/19 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
python批量下载抖音视频
2019/06/17 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
django model object序列化实例
2020/03/13 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
SQL Server面试题
2013/04/04 面试题
班级德育工作实施方案
2014/02/21 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
党员创先争优心得体会
2014/09/11 职场文书
五好家庭事迹材料
2014/12/20 职场文书
加薪通知
2015/04/25 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
mysql 获取相邻数据项
2022/05/11 MySQL