All Projects → suhanyujie → NovelSpider

suhanyujie / NovelSpider

Licence: other
抓取小说

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to NovelSpider

SuperXSS
Make XSS Great Again
Stars: ✭ 57 (+32.56%)
Mutual labels:  workerman
chat project
基于GatewayWorker+Vue所写的聊天室
Stars: ✭ 19 (-55.81%)
Mutual labels:  workerman
dnmp
docker-compose部署LNMP环境 Nginx/Openresty、MySQL(5.7、8.0、8.1)、PHP7.4(8.0、5.6)、Redis5.0、PHPMyAdmin、Xdebug、RabbitMQ、Nacos
Stars: ✭ 138 (+220.93%)
Mutual labels:  workerman
Phpsocket.io
A server side alternative implementation of socket.io in PHP based on workerman.
Stars: ✭ 2,026 (+4611.63%)
Mutual labels:  workerman
Workerman Todpole
HTML5+WebSocket+PHP(Workerman) , rumpetroll server writen using php
Stars: ✭ 1,751 (+3972.09%)
Mutual labels:  workerman
Mix
☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP 命令行模式开发框架,支持 Swoole、WorkerMan、FPM、CLI-Server
Stars: ✭ 1,753 (+3976.74%)
Mutual labels:  workerman
iyov
Web proxy for http(s) for developers to analyze data between client and servers based on workerman, especailly for app developers.
Stars: ✭ 27 (-37.21%)
Mutual labels:  workerman
larvelworkerman
Laravel5.5 + dingo + jwt + workerman 具有聊天的框架. 接口采用dingo标准的RESTFUL模式,JWT用于token验证,workerman用于聊天工具开发只要是websocket
Stars: ✭ 20 (-53.49%)
Mutual labels:  workerman
Navigation
一款基于 Workerman 的 PHP Web 开发框架。
Stars: ✭ 20 (-53.49%)
Mutual labels:  workerman
wind-framework
Pure PHP Coroutine Framework based on Workerman and Amphp.
Stars: ✭ 41 (-4.65%)
Mutual labels:  workerman
cpms-php
使用thinkPHP5.0开发的后台简洁管理系统脚手架,cpms-php是采用TP5.0开发的一个简单的后台脚手架管理系统(包括前台展示和后台管理部分)。主要模块有:用户登入验证、后台管理员增删改查、文章发布、RBAC权限管理、socketIO在线即时聊天
Stars: ✭ 20 (-53.49%)
Mutual labels:  workerman
static-php-cli
Build single static PHP binary in linux, build with PHP project together, with Swoole and other popular extensions included.
Stars: ✭ 129 (+200%)
Mutual labels:  workerman
Querylist
🕷️ The progressive PHP crawler framework! 优雅的渐进式PHP采集框架。
Stars: ✭ 2,392 (+5462.79%)
Mutual labels:  querylist

NovelSpider

  • 爬取小说,练练手。仅供学习交流之用。
  • 可抓取特定小说,并生成 txt 文件,然后生成二维码手机扫描下载小说。

Feature

  • 多进程抓取 biquge 小说,存入数据库
  • 将单个小说的所有章节导出为 txt 文件
  • 将文件上传到云端,生成二维码,以便手机下载 txt 文件

环境要求

  • *Unix 环境
  • redis 服务
  • PHP >= 7.2

使用

docker 环境

  • 构建镜像 docker build . --file ./Dockerfile --tag {your_tagname}
  • 也可以直接拉取我构建好的镜像
    • docker pull suhanyujie/novel_spider:latest
    • docker run --name novel_spider -d suhanyujie/novel_spider:latest

安装(install)

配置

  • cp env.example .env
  • .env 文件中配置好对应的环境信息
  • 安装 composer 依赖:composer install

运行

  • 启动提供 web 服务的程序,必须到项目根目录运行:php Novel/NovelAdmin/index.php start
  • 启动:./start.sh start
  • 停止:./start.sh stop

功能使用

  • 抓取列表 php Novel/NovelSpider/start_list.php start
  • 抓取章节内容 php Novel/NovelSpider/start_detail.php start
  • 将小说导出为 txt 文件:php Novel/Consoles/index.php novel:exportTxt 10,其中 10 是小说id
  • 通过二维码下载小说:php Novel/Consoles/index.php novel:uploadToCloud 10,其中 10 是小说id

一些注意事项

  • 更新 workerman 的软件包 composer update workerman/workerman

composer 镜像源

  • 可以先把 composer.lock 文件删除,配置阿里的镜像源 composer config repo.packagist composer https://mirrors.aliyun.com/composer/
  • 然后 composer install

关于爬取小说的一些思路

web api

  • 控制器路径位于 Novel/Controllers。例如控制器 Novel/Controllers/Access/LoginController.php 的 URI 是 /Access/Login/login

列表爬虫思路:

  • 一个单独的进程,会有定时器,定时循环所有小说看他们是否产生最新连载。 20170422
  • 一旦有发现一个,则将其尚未爬取的章节加入到“爬取详情页”的任务队列

数据表

  • novel_main 一部小说一条记录
处理状态流程图
  • deal_status_transfer

一些记录

  • illuminate/database 升级到 ^8.61.0
  • dom解析使用一个dom解析服务 20190406
  • 实现和前端NovelSpiderFrontend的简单交互 20190405
  • 去除软件包indieteq/indieteq-php-my-sql-pdo-database-class,改用illuminate/database 20190303
  • 引入league/route路由,对应文档http://route.thephpleague.com/4.x/usage/ 20190109
  • 添加前端界面展示 20181106
  • 更换出具库的查询工具 20181102
  • 建立好测试目录,引入phpunit 20170423
  • 编写测试代码.已成功在本地运行一个测试代码

参考

类库

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].