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 相关文章推荐
第七节--类的静态成员
Nov 16 PHP
PHP Pear 安装及使用
Mar 19 PHP
php接口与接口引用的深入解析
Aug 09 PHP
PHP答题类应用接口实例
Feb 09 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
Dec 29 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
PHP的PDO错误与错误处理
Jan 27 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
php使用curl访问https示例分享
2014/01/17 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
javascript中的new使用
2010/03/20 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
javascript中Object使用详解
2015/01/26 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
opencv与numpy的图像基本操作
2019/03/08 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
基于opencv实现简单画板功能
2020/08/02 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
创新型城市实施方案
2014/03/06 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript