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 常用函数库和一些实用小技巧
Jan 01 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
PHP实现的比较完善的购物车类
Dec 02 PHP
ThinkPHP控制器详解
Jul 27 PHP
PHP实现的浏览器检查类
Apr 11 PHP
非常经典的PHP文件上传类分享
May 15 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
PHP7 新特性详细介绍
Sep 06 PHP
php fread读取文件注意事项
Sep 24 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 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中的extract的作用分析
2008/04/09 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
一些技巧性实用js代码小结
2009/10/14 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
JS面向对象编程详解
2016/03/06 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
Python爬取读者并制作成PDF
2015/03/10 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
深入理解Python 多线程
2020/06/16 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
美国羊皮公司:Overland
2018/01/15 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
《画家乡》教学反思
2014/04/22 职场文书
广告学专业求职信
2014/06/19 职场文书
歼十出击观后感
2015/06/11 职场文书
观后感格式
2015/06/19 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
详细介绍python操作RabbitMq
2022/04/12 Python