微信号:we21cto

介绍:21CTO(21CTO.com)是中国项级技术专家的学习与服务平台.我们为CTO、技术总监、架构师等技术专家提供高质量的资讯、问答、活动等产品,同时与企业连接,提供技术咨询、研发、运维、技术支持、培训及人才招聘等服...

个性化推荐系统架构设计(二):爬虫系统概述

2016-11-09 23:15 杜江


各位好,今天来继续介绍内容推荐系统的几大核心部分。

目前大多数的产品都加入了推荐功能,比如图书、电影、音乐等,我把这些都视为商品,要么是自营,要么是从第三方获取包装好后再根据用户兴趣做推荐。

淘宝、京东有自有的商品和订单数据,网易新闻、搜狐新闻有自己的小编团队,能够生产内容。而像今日头条、一点资讯等应用没有小编,则像搜索引擎一样采集互联网内容,再推荐。

 

今天我们来讲爬虫系统,会分成若干篇来讲解。

 

网络爬虫,是用来采集信息的程序的昵称之一,英文称为Web Crawler;也有称之为Web Scrper,网络铲,有点像盗墓笔记中的洛阳铲,还有一个名字,叫做网络蜘蛛,WebSpider,这个名字更形象些。还有一个名字叫Robots,网络机器人,这个名字适合现在的人工智能时代。

 

网络爬虫是做什么的?它和Google、百度们有啥区别?首先爬虫能做搜索引擎做不到的事,比如今天搜索“金三胖”的关键字,搜索引擎们拒绝服务。而用某个社区的搜索,你可能能搜索到和金先生的文章或帖子;再比如搜索到成都的飞机,百度能给我们返回好几十页的结果,它们只知道这些网站会显示什么内容,却不能在国内航班线路返回精确的结果。

 

有的网站提供开放API或RSS之类,我们调用API来获取当然更方便,但是很多内容并没有开放API,尤其是国内。

原因是我们要的数据,网站API开放的程度有限,包括内容或调用次数,或者根本不提供,或者总是出问题等。

我们通过人工手段去一页页的通过浏览器获取,基本是需要天文时间,而使用爬虫可以分分钟获取到几万到几十万个页面或数据。

 

爬虫可以运行在浏览器,也可以运行在命令行。通常是通过某个网站URI结点,顺着超链接开始爬,把有用的内容抓下来。

 

写网络爬虫并不限于某个语言,使用Perl,PHP,Python,Java,C#,Go等可以做得很好。语言设计哲学不同,行为方式也各式各样,都是解放人类的好工具。

 

我曾用Perl抓取过当年的阿里巴巴,后来阿里限制了页面打开时间,我们加入超时时间接着爬,后来他们又加入了用户会话Session,我们就注册帐号,带着Cookie再抓,帐号被封了几个,就用很多个代理主机抓。如此这般,一个网站的内容基本都取到了。

 

后来用PHP写爬虫,跑在本地,加上个自动挂断与连接ADSL的功能,可以自动化做很多事,不用我们操太多心。后来我在某个分类信息网站,做了更多抓取的事,对方也抓我们,互相补充内容。在做电子商务的时候,监控竞争对手网站的商品价格,做市场预测,也是爬虫派上很大的用场。

还有机器语言翻译,医疗诊断行业。当然,更多的场景应用是对新闻站点,文学站点,健康社区、图片网站中的数据抓取分析,可以给人们更大的视野。

 

总体来讲写爬虫是一件让人惊喜的事,有时候还可以发现表面看不到的东西,也就是所谓的“暗网”。

 

总体来说,只要我们不用来做坏事,爬虫可以让我们的更高效,更有趣,更能开创新的内容领域。


我们下回接着聊。


作者:杜江。21CTO(21cto.com)社区创始人。多年架构与管理经验。 著有《PHP5与MySQL5 Web开发技术详解》、《PHP5完全攻略》、《PHP与MySQL高性能应用开发》(机械工业出版社出版,各电商平台和书店有售)。

 
21CTO 更多文章 个性化推荐系统架构设计(一) 程序猿怎么跳出技术的“鄙视链” 1024,程序员节节日快乐 微信小程序畅想曲 600亿估值、5.5亿用户背后,今日头条是如何在4年间实现爆发式增长的?
猜您喜欢 Android 画笔Paint Java 8 Update 11破坏了第三方工具 API 调用次数限制实现 CDH(Cloudera)与hadoop(apache)对比 从零开始学Android应用安全测试(Part1)