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自动跳转中英文页面
Jul 29 PHP
PHP 批量删除数据的方法分析
Oct 30 PHP
CURL状态码列表(详细)
Jun 27 PHP
ThinkPHP连接数据库的方式汇总
Dec 05 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
PHP中trait使用方法详细介绍
May 21 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
PHP中递归的实现实例详解
Nov 14 PHP
详细分析PHP 命名空间(namespace)
Jun 30 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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与ASP
2006/10/09 PHP
PHPEXCEL 使用小记
2013/01/06 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
移动节点的jquery代码
2014/01/13 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
python将人民币转换大写的脚本代码
2013/02/10 Python
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
Python生成验证码实例
2014/08/21 Python
python 中字典嵌套列表的方法
2018/07/03 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
Python 实现数组相减示例
2019/12/27 Python
Python解析多帧dicom数据详解
2020/01/13 Python
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
软件工程专业推荐信
2013/10/28 职场文书
个人函授自我鉴定
2014/03/25 职场文书
保密工作承诺书
2014/08/29 职场文书
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers