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程序的国际化实现方法(利用gettext)
Aug 14 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
PHP mysql与mysqli事务使用说明 分享
Aug 17 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
thinkphp配置连接数据库技巧
Dec 02 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
PHP调用接口用post方法传送json数据的实例
May 31 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 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
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
python基础教程之常用运算符
2014/08/29 Python
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
简单了解python单例模式的几种写法
2019/07/01 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
Django 路由层URLconf的实现
2019/12/30 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
类和结构的区别
2012/08/15 面试题
应用化学专业本科生求职信
2013/09/29 职场文书
初中数学教学反思
2014/01/16 职场文书
农民致富事迹材料
2014/01/23 职场文书
总经理司机岗位职责
2014/02/06 职场文书
出纳员岗位责任制
2014/02/11 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
煤矿安全保证书
2015/02/27 职场文书
汉语拼音教学反思
2016/02/22 职场文书
Python加密技术之RSA加密解密的实现
2022/04/08 Python
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python