lndj/lcrawl
Composer 安装命令:
composer require lndj/lcrawl
包简介
一只优雅的正方教务系统爬虫。
README 文档
README
使用PHP实现正方教务系统爬虫功能。
可能是正方教务系统最优雅的一只爬虫。
安装
使用 composer 进行安装:
composer require lndj/lcrawl
要体验最新功能,可以执行:
git clone https://github.com/lndj/Lcrawl.git
cd Lcrawl
composer install
注意:请先安装
composer
Example
<?php // Require the composer autoload file require './vendor/autoload.php'; $stu_id = '201201148'; //Notice: This is NOT test account!!! $password = 'xxxxxxxx'; $user = ['stu_id' => $stu_id, 'stu_pwd' => $password]; $client = new Lcrawl('http://xuanke.lzjtu.edu.cn/', $user); //登陆 -- 没有开启会话缓存,必须调用登陆方法。 $client->login(); //获取所有数据 $all = $client->setUa('Lcrawl Spider V2.0.2')->getAll(); // $client->getSchedule(); // $client->getCet();
在请求过程中,你还可以设置 Referer/Timeout 等 header 信息,直接采用链式调用即可。
会话缓存
在请求过程中,可以启用会话缓存功能,可以有效减少教务系统会话开启数量。
//实例化过程中传入第三个值 $client = new Lcrawl('http://xuanke.lzjtu.edu.cn/', $user, true); $all = $client->setUa('Lcrawl Spider V2.0.2')->setTimeOut(3.0)->getAll();
高级用法
为达到在登陆一次后的一段时间内,不需要再次执行登陆操作便可直接获取数据,减少教务网请求量,可以使用会话缓存。
首先,在实例化Lcrawl时,传入第三个参数为 true 。
例如:
//实例化过程中传入第三个值 $client = new Lcrawl('http://xuanke.lzjtu.edu.cn/', $user, true);
第三个参数即表示开启会话缓存。
本项目使用 doctrine/cache 来完成缓存工作,它支持基本目前所有的缓存引擎。
在我们的 Lcrawl 中的所有缓存默认使用文件缓存,缓存路径取决于PHP的临时目录,如果你需要自定义缓存,那么你需要做如下的事情:
use Doctrine\Common\Cache\RedisCache; $cacheDriver = new RedisCache(); // 创建 redis 实例 $redis = new Redis(); $redis->connect('redis_host', 6379); $cacheDriver->setRedis($redis); //设置使用redis来缓存会话 $client->setCache($cacheDriver);
你可以参考doctrine/cache官方文档来替换掉应用中默认的缓存配置:
以 redis 为例
请先安装 redis 拓展:https://github.com/phpredis/phpredis
设置登录过程参数
本SDK默认使用的是 ysdx_default.aspx 为登陆的 uri 。若要使用其他 uri ,可自行抓包获取登录过程的参数。
在实例化时,传入第四个参数, $loginParam ,数组的key为固定值,value传入抓包过程中 POST body 的字段名即可。
$loginParam = [ 'viewstate' => '__VIEWSTATE', //隐藏域字段名称 'stu_id' => 'TextBox1', //学号字段名称 'passwod' => 'TextBox2', //密码字段 'role' => 'RadioButtonList1', //角色 'button' => 'Button1' //按钮 ]; $client = new Lcrawl('http://xuanke.lzjtu.edu.cn/', $user, true, $loginParam); //other code...
API
getAll()
获取所有数据,并发获取
getSchedule()
获取课表数据
getGrade()
获取成绩数据
getCet()
获取四六级数据
getExam()
获取考试安排数据
setX() 类
设置相应 Header 值,例如: setUa()/setTimeout()/setReferer() 等。
getX()类
Getter.
Laravel 中使用
在 Laravel 中框架使用 predis/predis ,那么我们就得使用 Doctrine\Common\Cache\PredisCache:
use Doctrine\Common\Cache\PredisCache; $predis = app('redis')->connection();// connection($name), $name 默认为 `default` $cacheDriver = new PredisCache($predis); //设置使用redis来缓存会话 $client->setCache($cacheDriver);
上面提到的
app('redis')->connection($name), 这里的$name是laravel项目中配置文件database.php中redis配置名default:https://github.com/laravel/laravel/blob/master/config/database.php#L118如果你使用的其它连接,对应传名称就好了。
License
MIT License
lndj/lcrawl 适用场景与选型建议
lndj/lcrawl 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.28k 次下载、GitHub Stars 达 117, 最近一次更新时间为 2016 年 05 月 10 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「wechat」 「正方」 「模拟登陆」 「教务系统」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 lndj/lcrawl 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 lndj/lcrawl 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 lndj/lcrawl 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
WeChat OAuth SDK
微信SDK
钉钉、企业微信、飞书 自定义群组机器人。支持链式语法创建发送消息。支持文本、Markdown、图片、文件、图文、卡片等消息。
The wechat extension for the Yii framework
【正方教务】爬虫,支持成绩查询、考试查询、课表查询、四六级成绩查询、四六级报名、选课查询、修改密码、获取用户菜单等功能,并且解析数据成易读格式,符合 psr 规范,拿来即用
一只优雅的正方教务系统爬虫。
统计信息
- 总下载量: 2.28k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 117
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-05-10