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 AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 PHP
PHP随机字符串生成代码(包括大小写字母)
Jun 24 PHP
调整PHP的性能
Oct 30 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
php按字符无乱码截取中文的方法
Mar 27 PHP
php调整服务器时间的方法
Apr 03 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
微信支付之JSAPI公众号支付详解
May 15 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
js实现导航跟随效果
2018/11/17 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
在MAC上搭建python数据分析开发环境
2016/01/26 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
python实现感知器算法详解
2017/12/19 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
python Pexpect模块的使用
2020/12/25 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
函授毕业个人自我评价
2014/02/20 职场文书
腾讯广告词
2014/03/19 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
研究生简历自我评
2015/03/11 职场文书