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下10件你也许并不了解的事情
Sep 11 PHP
php session 错误
May 21 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
PHP命名空间(Namespace)简明教程
Jun 11 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
PHP框架laravel的.env文件配置教程
Jun 07 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 PHP
laravel 创建命令行命令的图文教程
Oct 23 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面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
js电话号码验证方法
2015/09/28 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
python 提取文件的小程序
2009/07/29 Python
python实现百度语音识别api
2018/04/10 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
2014的自我评价
2014/01/13 职场文书
关于环保的建议书400字
2014/03/12 职场文书
平安校园建设方案
2014/05/02 职场文书
社区反邪教工作方案
2014/06/16 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
五年级上册复习计划
2015/01/19 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript