NUIST找工作小玩具
除了生孩子,MATLAB能做你想到的一切
又到一年秋招季,楼主不幸被学院点中,每天搜集学校就业网上发布的信息。然后楼主看看就业网上那海量混乱的信息,再想想每天。。。
不过楼主突然想到能不能写个爬虫什么的帮楼主完成这些工作。但不幸的是,楼主不会Python。嘛,老年人不会Python又不是什么罪过,而且也不止Python才能写爬虫啊。是我用语言不是语言用我。楼主以前数模的时候记得可以用MATLAB写爬虫来着,对于其他人来说MATLAB这个收费软件未免太小众,但对于楼主的专业,MATLAB天天用好么。于是楼主就写了一个MATLAB的就业信息搜集玩具,来偷懒。
第一个版本只有不到50行,就写了半个下午。当天晚上小改了一下,本以为能发布了,结果楼主今天早上刚想发,听说还有宣讲会,于是没办法,又增加了这个功能。。我好难啊。。。
MATLAB的爬虫原理很简单,用urlread()来读网页前端(就是F12按下去那个),用regexp()正则匹配。regexp()用法可以参照MATLAB官方文档,不过这个显然太高阶了,楼主这么懒的人怎么可能用呢,所以楼主参考的是这个。
其实代码还可以优化很多,特别是提高速度这一块,不过楼主这么懒对不对,就请有心的使用者自行操作吧,不过要是哪天楼主心情好也会更新哒。
小玩具本身是针对NUIST的,不会适配其他学校。
%% --- update --- %%
% v2.1 增加了关键词,修复了提示bug
% v2.0 增加了宣讲会搜索
% v1.1 增加了人工确认公告%% -------------------------------------------------------------------------------------------------------------------------clc; clear; close all;
keyword = { '气象', '海洋', '航空', '机场', '试飞', '空管' }; % 因为调用了学校的,所以不支持正则表达
ann_time = '3'; % announcement time can be 1, 3, 7, 14, 30, 60
present_time = '7'; % present time can be 1, 3, 7, 14, 30, 60
require = '大气|海洋|天气'; % 支持逻辑表达
open_url = 1; % 是否打开这些网站。1是(default);0,否。时间大于一个月禁止打开网站
disp( [ 'NUIST招聘信息自动搜索已启动,搜索可能需要一点时间', newline ] );
disp( [ '搜索时间范围:招聘公告:', ann_time, '天以内发布;宣讲会:', present_time, '天以内举行', newline ] );
disp( '标题关键词(不支持逻辑表达):' );
disp( keyword );
disp( '内容关键词(支持逻辑表达):' );
disp( { require } );
%% --- 搜索招聘公告 --- %%ann_company_name = {};
ann_company_url = {};
for i = 1 : length( keyword )keyword_url = urlencode( keyword{ i } ); % 将中文转化为URL编码% 自动翻页webfile = urlread( ...[ 'http://nuist.91job.org.cn/campus?keyword=', keyword_url, '&range=&city=&time=', ann_time, '&page=' ] );expression_page = '共<span class="orange">(.*?)</span>页'; % 调用网站搜索器检索标题[ ~, page ] = regexp( webfile, expression_page, 'match', 'tokens' );if isempty( page ) % 检测不到页数就是1页page = 1;elsepage = str2double( page{ 1 } );end
% 每一页都要找for p = 1 : pagewebfile = urlread( ...[ 'http://nuist.91job.org.cn/campus?keyword=', keyword_url, '&range=&city=&time=', ann_time, '&page=', ...num2str( p ) ] );expression = '/campus/view/id/(.*?)" target="_blank">';[ ~, company_detail_temp ] = regexp( webfile, expression, 'match', 'tokens' );% 检索每条内容是否含有内容关键词,因为有修仪器的招聘。。for j = 1 : length( company_detail_temp )webfile2 = urlread( [ 'http://nuist.91job.org.cn/campus/view/id/', company_detail_temp{ j }{ 1 } ] );[ requirefile ] = regexp( webfile2, require, 'match' );if isempty( requirefile )continueendexpression_name = '<title>(.*?)</title>';[ ~, company_name_temp ] = regexp( webfile2, expression_name, 'match', 'tokens' );ann_company_url =[ ann_company_url, company_detail_temp{ j } ];ann_company_name = [ ann_company_name, company_name_temp ];endend
end
[ ann_company_url, ia, ~ ] = unique( ann_company_url, 'first' ); % 因为keyword不支持逻辑,所以要防止重复
ann_company_name = ann_company_name( ia );
%% --- 搜索宣讲会 --- %%
present_company_name = {};
present_company_url = {};
present_location = {};
present_start_time = {};
for i = 1 : length( keyword )keyword_url = urlencode( keyword{ i } ); % 将中文转化为URL编码% 自动翻页webfile = urlread( ...[ 'http://nuist.91job.org.cn/teachin?title=', keyword_url, '&range=&city=&time=', present_time, '&page=' ] );expression_page = '共<span class="orange">(.*?)</span>页'; % 调用网站搜索器检索标题[ ~, page ] = regexp( webfile, expression_page, 'match', 'tokens' );if isempty( page ) % 检测不到页数就是1页page = 1;elsepage = str2double( page{ 1 } );end
% 每一页都要找for p = 1 : pagewebfile = urlread( ...[ 'http://nuist.91job.org.cn/teachin?title=', keyword_url, '&range=&city=&time=', present_time, '&page=', num2str( p ) ] );expression = '/teachin/view/id/(.*?)" title=';[ ~, company_detail_temp ] = regexp( webfile, expression, 'match', 'tokens' );if isempty( company_detail_temp ) % 没有就跳,节约资源continueendexpression = 'title="(.*?)" target="_blank"';[ ~, company_name_temp ] = regexp( webfile, expression, 'match', 'tokens' );expression = '<li class="span4">(.*?)</li>';[ ~, present_location_temp ] = regexp( webfile, expression, 'match', 'tokens' );expression = '<li class="span5">(.*?)</li>';[ ~, present_time_temp ] = regexp( webfile, expression, 'match', 'tokens' );% 就来招个修仪器的,应该不用宣讲会present_location_temp = present_location_temp( 2 : end );present_time_temp = present_time_temp( 4 : 2 : end ); % 学校就业网谁写的???智力问题??3打成5都没发现??我debug了好久present_company_url =[ present_company_url, company_detail_temp{ 1 : end } ];present_company_name = [ present_company_name, company_name_temp ];present_location = [ present_location, present_location_temp ];present_start_time = [ present_start_time, present_time_temp ];end
end
[ present_company_url, ia, ~ ] = unique( present_company_url, 'first' ); % 因为keyword不支持逻辑,所以要防止重复
present_company_name = present_company_name( ia );
present_location = present_location( ia );
present_start_time = present_start_time( ia );
%% --- 显示结果 --- %%
% 招聘公告
disp( [ '招聘公告', newline ] );
for i = 1 : length( ann_company_url )disp( ann_company_name{ i }{ 1 } );disp( [ 'http://nuist.91job.org.cn/campus/view/id/', ann_company_url{ i }, newline ] );if open_url && str2double( ann_time ) < 60web( [ 'http://nuist.91job.org.cn/campus/view/id/', ann_company_url{ i } ], '-browser' ); % 调用系统浏览器会快一点end
end
% 宣讲会
disp( [ '宣讲会', newline ] );
for i = 1 : length( present_company_url )disp( present_company_name{ i }{ 1 } );disp( [ '地点:', present_location{ i }{ 1 },';时间:', present_start_time{ i }{ 1 } ] );disp( [ 'http://nuist.91job.org.cn/teachin/view/id/', present_company_url{ i }, newline ] );if open_url && str2double( ann_time ) < 60web( [ 'http://nuist.91job.org.cn/teachin/view/id/', present_company_url{ i } ], '-browser' ); % 调用系统浏览器会快一点end
end
disp( [ '搜索完成!共找到', num2str( length( ann_company_url ) + length( present_company_url ) ), '条,其中公告'...num2str( length( ann_company_url ) ), '条,宣讲会', num2str( length( present_company_url ) ), '条。' ] );
NUIST找工作小玩具相关推荐
- 2020-09找工作小计
文章目录 面试经历 叽里呱啦 平安保险(外包) 百盛 ebay(外包) 字节跳动 paypal(外包) 交银企服 支付宝 宝武工业研究院 摩根斯坦利 领猎网络科技有限公司 太平洋保险(总部) 太平洋寿 ...
- 大专生程序员找工作的一点小建议 知识分享 经验分享
最近呢有人在私信我 就问我说我呢是一个大专生 大专毕业 学历呢也不是很好 我但是我学的是这个计算机 这样一个专业 然后呢现在找工作找不到 就这样的一个要求 让我们呢给一些建议 当然就是私底下在网上聊吗 ...
- 《我是一只IT小小鸟》读后感,献给要正在找工作的有缘朋友
总结总是在不断的证明她的重要性,看到每一位"小鸟"的经历,再倒回去看上个月的今天我在做什么呢? 上个月6号我辞去了我的"第一份工作",尽管是一份实习工作,其实曾 ...
- 一个普通211小硕的找工作辛酸历程
最近毕业论文写得不顺,看周边同学还在忙着找工作,突然觉得自己应该说点什么,把自己找工作的失败教训和一些经验分享给大家,也许能够帮助一些同学少走我这样的弯路和误区.声明,本文是我根据近两个月的辛酸经历撰 ...
- 找工作的小技巧(雕虫小技),刚参加工作的小伙伴可以看看
找工作的小技巧(雕虫小技),刚参加工作的小伙伴可以看看 我们在找工作面试的时候,一般情况是这样的,你去到一家企业面试,一般都会有前台的妹子来接待你,并且叫你登记一下,登记内容一般就是叫你填写一下姓名, ...
- 『面试小犀牛』有了它找工作收offer到手软!
2019独角兽企业重金招聘Python工程师标准>>> 要找到一份好工作,面试可是至关重要的一步,它关乎着公司对你的第一印象,并直接与你后期的工作安排和工资评定挂钩,其实面试时是有很 ...
- [小说连载]张小庆,在路上(1)- 找工作
[全书目录] [下一章] 一切都有一个开始,连语文老师都说:任何文章都有开始.发展.高潮 ...
- 张小庆,在路上-开始(1)找工作
[荣浩作品,欢迎转 帖] [全书目录] [下一章] 一切都有一个开始,连语文老师都说:任何文章都有开始.发展.高潮和结局.张小庆的程序员生活开始于一个星期一的早上,天气很好,初春的空气中还略带一些寒意 ...
- 小项目-开篇:为找工作而写
项目背景: 辞职几个月在家专研python,已有小成,决定出去找工作,又苦于自己是半路出家的码农,没有什么项目经验,于是乎决定自己写个项目,这个为了找工作而写找工作项目应运而生. 需求探知: 需求是啥 ...
最新文章
- python可以在线编程吗-有哪些 python 的在线练习题或编程挑战的网站?
- iOS uiscrollView 嵌套 问题 的解决
- 读取工作流程中的表单物件
- tf.argmax tf2版本
- grid布局合并单元格
- python opencv立体测距 立体匹配BM算法
- 循环给对象创建属性名和属性值
- Spark API编程动手实战-08-基于IDEA使用Spark API开发Spark程序-01
- SQL Server 2005大小写敏感设置
- 基于MTCNN+CNN的疲劳检测
- 20 分钟教你量化自己的资产
- 计算机控制面板设置命令,控制面板在哪里打开?快捷键是多少(最全4种方法详解)...
- 这家SaaS公司估值50亿美元,竟然没有一个销售人员
- Matlab 4. Matlab2016 不能保存数据(变量)的解决方法(中文版)-v7.3 switch
- 《微型计算机原理与接口技术》复习笔记(四)
- 扇贝编程python认知课_扇贝编程-人人能学会的python课 in de App Store
- 网络及路由器故障诊断基础知识
- 如何配置crontab每天早上6点和7点执行脚本
- 一款Github工具包-快速下载网页上的视频
- 梯度下降法-学习率选取
热门文章
- 敬业福!2023福卡官方攻略
- 未来5年的9大技术趋势
- 用友数据库类型 mysql_用友软件用的是什么数据库?
- kali虚拟机网络配置
- JavaScript:JavaScript这些小技巧你必须要知道
- 计算机科学家格言,未来科技有关名言
- Java中super()的使用
- 币圈“黑天鹅“事件,USDT完美演绎不可能事件
- js 获取当前gmt时间_js获取当前时区GMT
- Mysql使用大全(MySQL架构与存储引擎 、事务 、业务设计 、索引 、数据结构 、执行计划 、数值类型)