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与SQL注入攻击[一]
Apr 17 PHP
php自动跳转中英文页面
Jul 29 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
PHP 采集程序原理分析篇
Mar 05 PHP
php 函数使用方法与函数定义方法
May 09 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 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
浅谈本地WAMP环境的搭建
2015/05/13 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
执行iframe中的javascript方法
2008/10/07 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
js中开关变量使用实例
2017/02/24 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
Python中使用SAX解析xml实例
2014/11/21 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
Python pandas如何向excel添加数据
2020/05/22 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
巴西女装购物网站:Eclectic
2018/04/24 全球购物
党课培训主持词
2014/04/01 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
小学新课改心得体会
2016/01/22 职场文书