请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。
办公室的白板上写满了字。<\/p>
李明的粉笔停在半空,眉头皱成一个疙瘩。<\/p>
他转身看向另外四个同伴,又看看坐在会议桌旁的贾瀞雯。<\/p>
“贾总,这个‘网页爬虫’的概念……我们研究了三天,还是有点不明白。”他放下粉笔,拍了拍手上的粉灰,“文档上说,要让程序像蜘蛛一样在网上爬,自动发现和收集网页。<\/p>
但具体怎么实现?”<\/p>
张涛推了推眼镜,翻开陈浩写的技术框架文档:“这里写了一些思路--从几个种子网站开始,提取页面上的链接,然后访问这些链接,再提取新链接。<\/p>
理论上可行,但实际做起来问题很多。”<\/p>
“什么问题?”贾瀞雯问。<\/p>
“比如,有些网站不允许被访问。”说话的是王磊,团队里最年轻的一个,北大研究生在读,“还有,网页格式千奇百怪,怎么准确提取链接?再比如,如果程序陷入死循环怎么办?”<\/p>
贾瀞雯点点头。<\/p>
这些她也不懂,但她知道该问谁。<\/p>
“今天先到这里。”她看看表,“晚上我打电话问问陈总。<\/p>
大家继续研究其他部分,分词算法那边有进展吗?”<\/p>
张涛摇摇头:“更难。<\/p>
英文有空格分隔单词,中文是连在一起的。<\/p>
‘中华人民共和国’怎么分?是‘中华’‘人民’‘共和国’,还是‘中华人民’‘共和国’?不同的分法,意思差别很大。”<\/p>
会议室里一阵沉默。<\/p>
五个年轻人你看看我,我看看你,都从对方眼里看到同样的困惑--这个项目,比他们想象的要难得多。<\/p>
晚上八点,贾瀞雯在办公室拨通了陈浩的电话。<\/p>
“喂?”陈浩的声音有点喘,背景里有嘈杂的人声。<\/p>
“在忙?”<\/p>
“刚下戏,换衣服呢。”陈浩走到安静的地方,“说吧,今天遇到什么问题了?”<\/p>
贾瀞雯把白天的讨论复述了一遍。<\/p>
陈浩听完,笑了:“正常,这些确实是难点。<\/p>
你记一下,我一个个说。”<\/p>
贾瀞雯拿起笔。<\/p>
“第一,爬虫的伦理问题。<\/p>
我们要遵守robots协议,就是网站根目录下的一个文本文件,告诉爬虫哪些页面可以访问,哪些不行。<\/p>
这个必须遵守,不然我们会惹麻烦。”<\/p>
“第二,网页格式问题。<\/p>
现在网页主要是HTML,虽然各家写法不一样,但基本结构是固定的。<\/p>
链接都在<ahref=>标签里,用正则表达式可以提取。”<\/p>
贾瀞雯打断:“正则表达式是什么?”<\/p>
“一种文本匹配的方法。”陈浩解释,“比如你要找所有以‘http:\/\/’开头的字符串。<\/p>
这个让技术人员去查资料,他们懂。”<\/p>
“第三,防止死循环。<\/p>
每个访问过的链接都要记录下来,下次遇到就直接跳过。<\/p>
还要设置深度限制,不能无限爬下去。”<\/p>
贾瀞雯飞快地记着。<\/p>
陈浩的声音很平静,好像这些难题都不是问题。<\/p>
“那中文分词呢?”她问,“这个他们觉得特别难。”<\/p>
电话那头沉默了一会儿。<\/p>
“这个确实难。”陈浩承认,“英文搜索可以直接按单词匹配,中文必须先把句子切分成有意义的词语。<\/p>
我们需要的不是机械切分,而是理解语义后的智能切分。”<\/p>
“怎么做?”<\/p>
“两种思路。”陈浩说,“一是基于词典,把常用的词做成词典库,然后匹配。<\/p>
二是基于统计,分析大量文本,找出经常连在一起出现的字组合。<\/p>
最好的办法是两者结合。”<\/p>
贾瀞雯记下最后几个字,笔尖顿了顿:“浩哥,这些概念你怎么都懂?你又没学过计算机。”<\/p>
陈浩笑了:“我是不懂具体编程,但我懂逻辑,懂原理。<\/p>