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 相关文章推荐
dedecms中显示数字验证码的修改方法
Mar 21 PHP
Smarty安装配置方法
Apr 10 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
PHP 根据key 给二维数组分组
Dec 09 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP+MySQL实现消息队列的方法分析
May 09 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 PHP
PHP大文件及断点续传下载实现代码
Aug 18 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
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
js获取url传值的方法
2015/12/18 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中encode()方法的使用简介
2015/05/18 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
python如何对链表操作
2020/10/10 Python
Django websocket原理及功能实现代码
2020/11/14 Python
优秀的个人求职信范文
2014/05/09 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
天河观后感
2015/06/11 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android