周一上午,《数据结构的大课。
讲台上,头髮花白的老教授正对著麦克风,把炼表和二叉树讲得像催眠曲。阶梯教室里睡倒了一大片,只有前排几个立志考研的学霸还在笔耕不輟。
白宇航坐在后排靠窗的位置,手里的原子笔在笔记本上飞快勾画。他没记笔记,画的是三个方框。
左边一个方框,写著“万年历”;中间一条横幅logo,写著“天气预报”;右下角一个小豆腐块,写著“股票行情”。
他把本子往旁边推了推,撞了一下正把《电脑报夹在课本里偷看的老三张健,又踢了一脚前排正打瞌睡的老四宛良皓。
“別睡了,干活了。”
张健扫了一眼本子,眉头皱成个川字:“老六,你这画的啥?万年历?电脑右下角不都有时间吗?这不脱裤子放屁?”
“你有本事现在告诉我,下周三是农历初几?那天宜动土还是宜嫁娶?”
张健张了张嘴,噎住了。他又看了一眼右下角的系统时间,那是纯纯的公历数字,冷冰冰的。
“现在的网民,打开瀏览器除了输网址,根本不知道干啥。”白宇航用笔尖点了点那三个框,“咱们得给他们找点事干。这叫高频低深度』需求。不用多复杂,但得让他们每天都想看一眼。看一眼,流量就来了。”
宛良皓揉著惺忪的睡眼,转过身趴在桌子上,盯著那张草图:“道理是这个道理。但这天气和股票咋整?咱也不能僱人在气象局门口蹲著啊?还有股票,那得是实时数据,咱也没这资质。”
“谁让你自己產数据了?”白宇航压低声音,嘴角掛著一丝坏笑,“咱们做二道贩子。中央气象台官网有数据,新浪財经有实时大盘,咱们写个爬虫,给它抓过来,洗乾净,摆在咱们桌面上、首页上。”
“硬抢啊?”宛良皓乐了。
“读书人的事,那叫引用。”白宇航合上本子,这活儿看著简单,其实全是坑。2000年还没有开发ajax控制项,想让用户的页面不通过点击刷新就变数据,得用ira嵌套,还得配合后端脚本做无感刷新。这技术也就是欺负现在网速慢,大家看不出来。
下课铃一响,三人根本没往食堂走。
校门口的小卖部,白宇航拎了三桶康师傅红烧牛肉麵,张健抱了一捆火腿肠,宛良皓扛著两瓶大可乐,直奔道外新世纪网吧。
赵建军正在吧檯算帐,见这阵仗嚇了一跳:“咋的?你们仨位小老板,想不开了?这是要在我这儿搞抗议?”
“赵哥,开个包厢,闭关。”白宇航把五十元钱往吧檯上一拍,“这几天除了上厕所,別让人打扰我们。对了,开水得管够。”
赵建军一看这架势就知道是要干正事,反手把五十块钱扔回给白宇航,二话不说,直接领他们进网吧里面,把最里面那个安静的包厢门打开:“那几台机器刚换的显卡,网线路由器也是新的,单独调过的。缺啥少啥,喊一声。”
包厢门一关,方便麵的热气和火腿肠的香味混在一起。
“分工。”白宇航把笔记本摊开,“老四,你负责前端页面,把这三个模块给我嵌进首页去,样式要跟现在风格统一,別整得一眼看过去,跟牛皮癣似的。老三,你负责写抓取脚本,先把新浪財经的数据给我抠出来。我负责核心架构和正则规则。”
“妥了。”
三个人稀里呼嚕吃完面,键盘声立刻响成一片。
起初还算顺利,万年历这种死数据,网上有现成的算法库,稍微改改就能用,不用抓取。天气预报的数据源也比较规整,宛良皓那边前端调试得也挺快。
问题出在股票上。
三个小时后,张健把键盘一推,那动静大得差点把空泡麵桶震翻。
“这特么没法干!”张健抓著头髮,满脸通红,“新浪財经这网页写的什么玩意儿?全是table套table,表单套表单没完了,標籤乱得跟这桶泡麵似的。我定位这个td』,它下一个数据就跑那个div』里去了。这怎么抓?根本就没有规律!”
他是个完美主义者,代码写得漂亮,但遇到这种不讲道理的“屎山”代码,心態有点崩。
“抓不全吗?”白宇航嘴里叼著半根火腿肠,把椅子滑过来,“我看看。”
屏幕上是密密麻麻的htl源码,新浪財经的页面为了排版,確实用了无数层表格嵌套,看著让人眼晕。
“你是不是在数它是第几个表格?”白宇航扫了一眼张健的代码。
“不数怎么定位?它又没id。”
“老三,你这是老实人思维、学生思维。”白宇航把火腿肠咽下去,伸手接过键盘,“对付流氓代码,就得用流氓手段。別看结构,看特徵。”
白