除了生孩子,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找工作小玩具相关推荐

  1. 2020-09找工作小计

    文章目录 面试经历 叽里呱啦 平安保险(外包) 百盛 ebay(外包) 字节跳动 paypal(外包) 交银企服 支付宝 宝武工业研究院 摩根斯坦利 领猎网络科技有限公司 太平洋保险(总部) 太平洋寿 ...

  2. 大专生程序员找工作的一点小建议 知识分享 经验分享

    最近呢有人在私信我 就问我说我呢是一个大专生 大专毕业 学历呢也不是很好 我但是我学的是这个计算机 这样一个专业 然后呢现在找工作找不到 就这样的一个要求 让我们呢给一些建议 当然就是私底下在网上聊吗 ...

  3. 《我是一只IT小小鸟》读后感,献给要正在找工作的有缘朋友

    总结总是在不断的证明她的重要性,看到每一位"小鸟"的经历,再倒回去看上个月的今天我在做什么呢? 上个月6号我辞去了我的"第一份工作",尽管是一份实习工作,其实曾 ...

  4. 一个普通211小硕的找工作辛酸历程

    最近毕业论文写得不顺,看周边同学还在忙着找工作,突然觉得自己应该说点什么,把自己找工作的失败教训和一些经验分享给大家,也许能够帮助一些同学少走我这样的弯路和误区.声明,本文是我根据近两个月的辛酸经历撰 ...

  5. 找工作的小技巧(雕虫小技),刚参加工作的小伙伴可以看看

    找工作的小技巧(雕虫小技),刚参加工作的小伙伴可以看看 我们在找工作面试的时候,一般情况是这样的,你去到一家企业面试,一般都会有前台的妹子来接待你,并且叫你登记一下,登记内容一般就是叫你填写一下姓名, ...

  6. 『面试小犀牛』有了它找工作收offer到手软!

    2019独角兽企业重金招聘Python工程师标准>>> 要找到一份好工作,面试可是至关重要的一步,它关乎着公司对你的第一印象,并直接与你后期的工作安排和工资评定挂钩,其实面试时是有很 ...

  7. [小说连载]张小庆,在路上(1)- 找工作

    [全书目录]                                                         [下一章] 一切都有一个开始,连语文老师都说:任何文章都有开始.发展.高潮 ...

  8. 张小庆,在路上-开始(1)找工作

    [荣浩作品,欢迎转 帖] [全书目录] [下一章] 一切都有一个开始,连语文老师都说:任何文章都有开始.发展.高潮和结局.张小庆的程序员生活开始于一个星期一的早上,天气很好,初春的空气中还略带一些寒意 ...

  9. 小项目-开篇:为找工作而写

    项目背景: 辞职几个月在家专研python,已有小成,决定出去找工作,又苦于自己是半路出家的码农,没有什么项目经验,于是乎决定自己写个项目,这个为了找工作而写找工作项目应运而生. 需求探知: 需求是啥 ...

最新文章

  1. python可以在线编程吗-有哪些 python 的在线练习题或编程挑战的网站?
  2. iOS uiscrollView 嵌套 问题 的解决
  3. 读取工作流程中的表单物件
  4. tf.argmax tf2版本
  5. grid布局合并单元格
  6. python opencv立体测距 立体匹配BM算法
  7. 循环给对象创建属性名和属性值
  8. Spark API编程动手实战-08-基于IDEA使用Spark API开发Spark程序-01
  9. SQL Server 2005大小写敏感设置
  10. 基于MTCNN+CNN的疲劳检测
  11. 20 分钟教你量化自己的资产
  12. 计算机控制面板设置命令,控制面板在哪里打开?快捷键是多少(最全4种方法详解)...
  13. 这家SaaS公司估值50亿美元,竟然没有一个销售人员
  14. Matlab 4. Matlab2016 不能保存数据(变量)的解决方法(中文版)-v7.3 switch
  15. 《微型计算机原理与接口技术》复习笔记(四)
  16. 扇贝编程python认知课_‎扇贝编程-人人能学会的python课 in de App Store
  17. 网络及路由器故障诊断基础知识
  18. 如何配置crontab每天早上6点和7点执行脚本
  19. 一款Github工具包-快速下载网页上的视频
  20. 梯度下降法-学习率选取

热门文章

  1. 敬业福!2023福卡官方攻略
  2. 未来5年的9大技术趋势
  3. 用友数据库类型 mysql_用友软件用的是什么数据库?
  4. kali虚拟机网络配置
  5. JavaScript:JavaScript这些小技巧你必须要知道
  6. 计算机科学家格言,未来科技有关名言
  7. Java中super()的使用
  8. 币圈“黑天鹅“事件,USDT完美演绎不可能事件
  9. js 获取当前gmt时间_js获取当前时区GMT
  10. Mysql使用大全(MySQL架构与存储引擎 、事务 、业务设计 、索引 、数据结构 、执行计划 、数值类型)