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 相关文章推荐
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
PHP数组排序之sort、asort与ksort用法实例
Sep 08 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
php自定文件保存session的方法
Dec 10 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 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 stream_context_create()作用和用法分析
2011/03/29 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
详解php实现页面静态化原理
2017/06/21 PHP
JavaScript对象学习经验整理
2013/10/12 Javascript
JS中Location使用详解
2015/05/12 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
Python学习资料
2007/02/08 Python
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
python实现拼图小游戏
2020/02/22 Python
用python写爬虫简单吗
2020/07/28 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
python 操作excel表格的方法
2020/12/05 Python
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
NFL官方在线商店:NFLShop
2020/07/29 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
竞争上岗演讲稿
2014/01/05 职场文书
大型活动策划方案
2014/01/12 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
司机职责范本
2014/03/08 职场文书
四年级学生期末评语
2014/12/26 职场文书
毕业感言怎么写
2015/07/31 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript