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 相关文章推荐
写一个用户在线显示的程序
Oct 09 PHP
PHP 时间日期操作实战
Aug 26 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
php中hashtable实现示例分享
Feb 13 PHP
PHP的引用详解
Feb 22 PHP
使用php+swoole对client数据实时更新(一)
Jan 07 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
php获取'/'传参的值简单方法
Jul 13 PHP
Laravel框架实现简单的学生信息管理平台案例
May 07 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 PHP
PHP内存溢出优化代码详解
Feb 26 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
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
JavaScript 动态创建VML的方法
2009/10/14 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
python中__call__方法示例分析
2014/10/11 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
会计专业应届生自荐信
2014/02/07 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
寄语是什么意思
2014/04/10 职场文书
商铺消防安全责任书
2014/07/29 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
检讨书范文
2015/01/27 职场文书
教育读书笔记
2015/07/02 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
导游词之昭君岛
2020/01/17 职场文书
php 原生分页
2021/04/01 PHP
方法汇总:Python 安装第三方库常用
2022/04/26 Python