- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章TP5框架使用QueryList采集框架爬小说操作示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例讲述了TP5框架使用QueryList采集框架爬小说操作。分享给大家供大家参考,具体如下:
最近想写一个小说网站,就去搜资料,搜出来TP5可以使用QueryList采集框架去爬小说,这里我来给大家详解如何用QueryList去爬小说。 #首先应该下载TP5框架,然后在extend里面建立一个文件夹命名为QL,再去官网下载QueryList,然后把phpQuery.php 和 QueryList.php 两个文件放在QL文件夹下,如图:
##在QueryList.php里面加上命名空间:
1
2
3
4
5
6
7
|
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循环去一个一个采集每一章节的内容 。
##最后再将采集到的章节名与章节内容存入数据库 。
直接上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
<?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
);
}
}
}
}
|
我们来打印一下他的章节名和章节内容:
。
注:1.class属性一定要找对 2.采集下来 $data 的第一个数组的link不是第一章的url,下一个才是第一章的,所以 d a t a [ data[" role="presentation" style="position: relative;"> data[ data[i+1][‘link'] 是他第i章的url 。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助.
原文链接:https://blog.csdn.net/weixin_42580925/article/details/102688315 。
最后此篇关于TP5框架使用QueryList采集框架爬小说操作示例的文章就讲到这里了,如果你想了解更多关于TP5框架使用QueryList采集框架爬小说操作示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在为 get tp.address_from 和 tp.address_to 构建一个 View ,但我无法正常工作。这是我正在处理的查询: SELECT `tp`.`address_fr
我在 https://github.com/spakai/threadpool_future 中有 3 个针对此代码 ThreadPool 的单元测试用例 class ThreadPoolTes
我的应用程序有一个缓存值的方法。我需要第二种方法来检查类型 T 的泛型参数是否实现了 IEnumerable 而不是实现了 IList。如果答案是肯定的,该方法应该执行 .ToList 并将其转换回
如何理解 template bool is_array = true 是 template bool is_array = true 的部分特化? 这是相关的 code snippet: #inclu
P2P全称peer-to-peer,可定义为:以非集中方式使用分布式资源来完成关键任务的一类系统和应用。 定义中有两点解释一下: 资源――包括计算能力、数据、网络带宽等;关键任务――分布式计算、
WPS功能是路由器与无线设备(手机、笔记本等)之间的一种加密方式;而PIN码是WPS的一种验证方式,相当于无线WiFi的密码。当连接无线WiFi提示输入PIN码连接时,说明无线路由器上启用了wps功
1、进入虚拟服务器设置界面 登录路由器管理界面,点击“应用管理”,进入应用中心,如下图: 找到虚拟服务器,点击“进入”,如下: 2、添加映射条目及规则 点击“添加”按钮,如下:
第一步:启用打印服务器功能 登录路由器管理界面,在网络共享>>打印服务器中,确认打印服务器状态为在线,如下图: 第二步:安装打印服务器控制程序 1、解压控制程序 将下载好
据BleepingComputer消息,近日安全研究人员对当下9种流行WiFi 路由器进行测试分析,共发现了226个漏洞,其中包括一些路由器刚刚更新使用了最新的固件。 这些测试的路由器分别来自
本文实例讲述了TP(thinkPHP)框架多层控制器和多级控制器的使用。分享给大家供大家参考,具体如下: 多层控制器的目录结构是这样的: ├─Controller 访问控制器 │ 
TP-Link TL-WR847N路由器设置好连不上网怎么办?最近一位用户反馈说,自己的路由器型号是TP-Link TL-WR847N,按照说明书设置好路由器之后,发现连不上网,这是怎么回事呢?下面
TP-Link TL-WR880N路由器管理员默认密码是多少?对于TP-Link TL-WR880N路由器,有V1、V2、V3共3个硬件版本,不同的硬件版本,默认密码是不同的。下面就给大家分享TP-
我可以在 reducer 输出中传递值列表吗? 编码 :- 公共(public)类 XXX 扩展了 Reducer > 我需要输出为“文本列表”值。 可以通过 Map Reduce 吗? 最佳答案 您
我正在尝试从 Skoda Rapid 2009 模型中的各种 ECU 中查找 DTC。 我正在使用 OBDLink SX(elm 327 芯片)和 Putty(类似于 super 终端) https:
我正在使用 QT Creater 1.0.0。和 QT 4.5.0 LGPL 许可证。 我想用 QT 开发一个可以在 windows mobile 6.0 上运行的应用程序。 我在 QT 中创建了一个
我的窗口有三个 iframe,我可以切换到层次结构中的前两个框架并执行操作,但无法将上下文切换到第三个框架。 我可以切换到 FWin0 和 Content0 框架并设置/获取屏幕中的值,但无法将上
当我们讨论分布式系统的性能时,我们使用术语 tp50、tp90、tp99.99 TPS。有人可以解释一下这些是什么意思吗? 最佳答案 tp90 是满足 90% 请求的最长时间。想象一下你有时间: 10
I am playing around with hyperledger-sawtooth. I have installed the sawtooth in ubuntu machine but i
我正在尝试构建一个 html 表单并将其连接到一个正在执行查询并将信息插入 mysql 数据库的 php 文件。 这是我的 html 代码: Add Record Form MGMT I
我有一个输入。我需要验证该值是否以“T”开头,后跟数字或“TP”开头,后跟数字接受的值:T12345 或 TP12345 我的 JavaScript 代码 var ip_value = documen
我是一名优秀的程序员,十分优秀!