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面向对象全攻略 (九)访问类型
Sep 30 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
PHP扩展CURL的用法详解
Jun 20 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
微信access_token的获取开发示例
Apr 16 PHP
php基本函数汇总
Jul 09 PHP
两种php实现图片上传的方法
Jan 22 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
PHP封装curl的调用接口及常用函数详解
May 31 PHP
phpinfo无法显示的原因及解决办法
Feb 15 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删除HTMl标签的三种解决方法
2013/06/30 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
PHP之header函数详解
2021/03/02 PHP
JavaScript继承方式实例
2010/10/29 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
python调用API实现智能回复机器人
2018/04/10 Python
Python使用folium excel绘制point
2019/01/03 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
什么是组件架构
2016/05/15 面试题
高中美术教学反思
2014/01/19 职场文书
施工安全责任书范本
2014/07/24 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
2015国庆节66周年标语
2015/07/30 职场文书