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删除非空目录的函数代码小结
Feb 28 PHP
PHP中的str_repeat函数在JavaScript中的实现
Sep 16 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
PHP大转盘中奖概率算法实例
Oct 21 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
php.ini中的request_order推荐设置
May 10 PHP
php写入、删除与复制文件的方法
Jun 20 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
php工具型代码之印章抠图
Jul 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
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
javascript实现拖放效果
2015/12/16 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
python连接池实现示例程序
2013/11/26 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
Python装饰器用法示例小结
2018/02/11 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
Python递归函数实例讲解
2019/02/27 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
Python random模块的使用示例
2020/10/10 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
毕业自我鉴定
2013/11/05 职场文书
业务部经理岗位职责
2014/01/04 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
新年团拜会主持词
2014/04/02 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
就业意向书范本
2015/05/11 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
MySQL创建管理子分区
2022/04/13 MySQL