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 相关文章推荐
PHP5 面向对象程序设计
Feb 13 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
详解PHP导入导出CSV文件
Nov 03 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 PHP
php json相关函数用法示例
Mar 28 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 PHP
PHP的Trait机制原理与用法分析
Oct 18 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
php微信小程序解包过程实例详解
Mar 31 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代码书写习惯优化小结
2013/06/20 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
js编写选项卡效果
2017/05/23 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
vuex的使用步骤
2021/01/06 Vue.js
微信小程序选择图片控件
2021/01/19 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
Python封装shell命令实例分析
2015/05/05 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
python tkinter控件布局项目实例
2019/11/04 Python
python离线安装外部依赖包的实现
2020/02/13 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
python中元组的用法整理
2020/06/15 Python
Python如何将字符串转换为日期
2020/07/31 Python
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
委托协议书范本
2014/04/22 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js