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编写的导航条程序
Oct 09 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
怎样使用php与jquery设置和读取cookies
Aug 08 PHP
浅析PHP文件下载原理
Dec 25 PHP
PHP的pcntl多进程用法实例
Mar 19 PHP
PHP中实现crontab代码分享
Mar 26 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
Jan 23 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后门代码解析
2014/07/05 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
c++生成dll使用python调用dll的方法
2014/01/20 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
详解python中*号的用法
2019/10/21 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
python开发入门——set的使用
2020/09/03 Python
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
年度考核自我鉴定
2013/11/09 职场文书
护士实习生自我鉴定范文
2013/12/10 职场文书
村优秀党员事迹材料
2014/01/15 职场文书
物控部经理职务说明书
2014/02/25 职场文书
家长学校实施方案
2014/03/15 职场文书
新农村建设典型材料
2014/05/31 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
追悼会家属答谢词
2015/09/29 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
一文搞懂python异常处理、模块与包
2021/06/26 Python
使用python绘制横竖条形图
2022/04/21 Python