电子科技大学 计算机学院 综合课程设计 报告

上传人:pu****.1 文档编号:492025121 上传时间:2022-12-29 格式:DOC 页数:18 大小:259.50KB
返回 下载 相关 举报
电子科技大学 计算机学院 综合课程设计 报告_第1页
第1页 / 共18页
电子科技大学 计算机学院 综合课程设计 报告_第2页
第2页 / 共18页
电子科技大学 计算机学院 综合课程设计 报告_第3页
第3页 / 共18页
电子科技大学 计算机学院 综合课程设计 报告_第4页
第4页 / 共18页
电子科技大学 计算机学院 综合课程设计 报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《电子科技大学 计算机学院 综合课程设计 报告》由会员分享,可在线阅读,更多相关《电子科技大学 计算机学院 综合课程设计 报告(18页珍藏版)》请在金锄头文库上搜索。

1、真诚为您提供优质参考资料,若有不当之处,请指正。摘 要本系统以一个大规模网络爬虫程序所获取的网络评论数据为基础,使用了词向量,用户画像等技术,构建了一个基于影评的推荐系统。主要的工作分为两部分,首先是研究分析了豆瓣电影网站是如何防御网络爬虫程序已经应对策略,其次根据网络爬虫程序获取的大量数据构建了一个推荐系统。关键词:大规模爬虫,用户画像,推荐系统 / 目 录摘 要I目 录II第一章 绪 论11.1 背景与意义11.2 本系统的总体设计构思11.3 本文的主要贡献与创新1第二章 大规模数据获取22.1 网络爬虫程序的原理22.2 网络爬虫程序的设计方案22.3 豆瓣电影网站爬虫可行性分析32.

2、3.1 豆瓣电影网站页面分析32.3.2 豆瓣电影网站反爬虫策略分析32.3.3 豆瓣电影网站爬虫策略的设计42.4 网络爬虫性能优化42.5 本章小结5第三章 影评分析推荐系统63.1 推荐系统综述63.1.1 推荐系统的概念和定义63.1.2 推荐系统的形式化定义73.2 推荐系统用户模型设计73.2.1 文本分析简介73.2.2 文本分析操作83.3 推荐系统推荐对象模型设计83.3.1 评分机制建模83.3.2 影片分类特征建模93.4 推荐系统算法93.4.1 协同过滤算法93.4.2 基于项目的协同过滤算法93.5 推荐系统推荐关键算法部分103.5.1 距离定义部分103.5.2

3、 近邻查找部分113.5.3 评分向量的构建12第四章 课程设计总结与展望134.1 总结134.2 后续工作展望13致 谢14参考文献15第一章 绪 论1.1 背景与意义随着中国移动互联网的迅速发展,网民数量也在大规模增长,用户在社交与电商网站上的活跃程度日趋增加。随着用户群体的增加,用户在网络上留下的行为数据呈现指数级增长。面对庞大的用户群体以及如此大量的行为数据,如何从中快速、准确、有效的获取到有价值的数据,分析出用户的行为习惯以及偏好,在大规模内容的场景下,为用户提供精准的推荐服务,是现在大数据研究领域的一个热点和重点。网络爬虫是大规模数据获取的必要程序。由于网络上数据的高潜在商业价值

4、,商业公司均会对其进行保密,即使能够直接获取的数据也会给出层层限制。在互联网发展的二十余年里,网络爬虫程序设计和网站反爬虫程序设计共同进步发展。如何有效的进行大规模网络数据爬取,同样是在工程领域的一个热点和重点。1.2 本系统的总体设计构思首先通过设计一个高性能网络爬虫,对部分数据进行爬取。在数据集上进行清洗,选择一些高质量的活跃用户,设计算法,提取特征,进行回测,调整特征的选择。之后再在大规模数据集上进行运算。1.3 本系统的主要贡献与创新本论文以大规模爬虫获取实时豆瓣电影数据为基础,实现了用户画像系统与推荐系统,根据历史数据得到的用户群体行为分析报告,并根据用户行为以及评论数据实现了智能化

5、的电影推荐。第二章 大规模数据获取在大规模互联网社群站点中,由于网站运营策略以及一些涉及到潜在商业价值的考虑,运营公司通常会设置一些特殊的访问流量识别措施阻止外界使用程序大规模获取数据。对于网络爬虫程序设计者来说,必须要识别并且进行一定的特殊设计,才能高效的大规模并行获取数据。2.1 网络爬虫程序的原理网络爬虫程序,也叫网络蜘蛛,在工程界通用简称“爬虫”,是一种可以自动实现模拟真实用户对网络资源访问并进行数据记录的程序。爬虫程序一般会选择记录目标站点的索引数据,以及所关注的主要内容的完整记录。2.2 网络爬虫程序的设计方案网络爬虫的形式多种多样,从早期的C、C+设计,到现在主流的Python、

6、Java设计都有其辉煌的历史。早期网络站点大部分内容、形式单一,静态网页居多,网络中富文本内容较少,计算机资源较少。使用C、C+编写的程序占用资源小,运行速度快,进行网络通讯的方式灵活,加之语言本身使用广泛,受到大量爬虫程序员的青睐。随着全球互联网产业、互联网基础设施的高速发展,谷歌、百度等搜索引擎的崛起,互联网上的资源爆炸性增长,基于各种目的,越来越多的程序员开始设计自己的网络爬虫程序。此时C、C+语言的一些缺点显现出来,集中在编码的不通用,设计繁琐,缺乏高度抽象的类库等。加之大规模数据存储平台的出现,C、C+爬虫程序日渐减少。爬虫程序主要的任务在于:访问网络资源,解析返回结果,对资源进行合

7、理存储。由于高度抽象以及简洁的语法,Python以及Java等一下代的更加工程化的语言被大家所青睐。网络爬虫的开发极具灵活性,由于现代前端技术的成熟,爬虫程序所获取的内容可能随时变化,无法使用传统的软件工程方法进行设计开发,通常的做法是迭代式的对网络站点进行交替的探测、开发。网络爬虫的主要模块功能比较固定,遇到的异常情况繁杂,需要有完善的异常处理机制。在对大规模数据设计的爬虫中尤其重要。Python在网络爬虫类程序的开发效率上有着无可比拟的先天优势,在文本分析、异常处理方面同样有着大量的简洁的设计,使得开发网络爬虫程序的方便程度与灵活程度大大提升。加之有许多专门为Python语言设计的网络访问

8、库,数据库访问框架,浏览器模拟器,文本解析器的存在,使得这门语言有着一个完备的网络爬虫程序开发生态环境。本文选择使用Python3语言实现一个网络爬虫程序,对豆瓣电影网上Top250电影榜单上共计一千四百余万条用户对电源的短评进行完全的爬取。在爬取数据的过程中,使用结构化序列化的方式进行数据的存储。2.3 豆瓣电影网站爬虫可行性分析2.3.1 豆瓣电影网站页面分析编写网络爬虫程序,首先要对目标站点进行页面分析。第一个参考页面:豆瓣Top250电影榜单第二个参考页面:豆瓣任意电影页面第三个参考页面:豆瓣任意电影短评页面使用Chrome浏览器的开发者模式观察页面。所有关键信息都以静态方式给出,不需

9、要模拟用户鼠标键盘行为与用户观察延时行为。我们可以直接解析,通过发出Get请求得到的返回页面。榜单页面可解析信息如下:总数,排行榜名称,排行榜排名,电影中文名,电影英文名,电影id,电影导演,电影主演,电影封面电影详情页面可解析信息如下:电影id,电影中文名,电影别名,电影豆瓣评分,看过人数,想看人数,评分人数,5张海报图,条目分类,导演,主演,编剧,官方网站,豆瓣小站,上映时间日期,年代,语言,电影时长,影片类型,制片国家和地区,简介,长评数量,短评数量。电影短评页面可解析信息如下:短评数量,每条短评。对于每条短评:短评id,发布日期,上传用户,短评内容,短评评分,有用数。通过轮询请求以上页

10、面,我们可以获得几乎所有豆瓣电影公开的数据。2.3.2 豆瓣电影网站反爬虫策略分析豆瓣电影作为国内电影领域最大的在线交流平台,拥有着大量的电影数据以及观众用户数据,一直被广大程序员以及数据分析人员作为目标数据站点使用网络爬虫获取数据。该网站的反爬虫策略已经比较完善,例如对单个IP地址并发访问量的限制,单个IP时间段内访问次数限制,用户浏览器Cookie检测,用户访问页面连续性检测,等等。经过长时间访问的实验,以及编写网络爬虫程序的经验,总结出了如下规律:1. 当发起Get请求是不带上Cookie,连续访问次数稍多,豆瓣网站将直接对操作的IP进行封禁。此时无论如何操作都将返回HTTP403的结果

11、。需要等待半小时至一小时IP才会解除封禁。2. 使用Cookie进行访问。第一次发起Get请求任意一个豆瓣页面,豆瓣都会返回一个名为bid的Cookie。之后带上这个Cookie请求页面,可以在约2秒一次访问频率上,5分钟不封禁的结果。但此时的封禁是对于该Cookie的,只要清空该Cookie,又可获得一个新的Cookie进行访问。IP地址是不会被封禁的。3. 若保持低频率访问豆瓣页面,比如在10秒一次的基础上,不论如何都不会被封禁。2.3.3 豆瓣电影网站爬虫策略的设计1. 首先进行多次次无Cookie的请求,获取多个bid,对这多个bid进行保存,并且进行访问次数的统计。2. 对于每次的G

12、et请求,随机在bid池中获取一个bid随请求发出,并根据返回结果更新次数统计。若该请求返回HTTP 403或者bid使用次数到达100次,即将该次访问操作回滚,将该bid抛弃3. 在池中bid数量小于一个阈值时,进行一轮无Cookie请求,更新bid池在之后的访问试验中,对bid进行测试时,发现豆瓣电影并没有对某个bid的第一次使用进行合法性判断。于是修改访问策略为:每次访问前对bid进行随机,并随请求发出,若失败则直接重新随机bid到成功为止。2.4 网络爬虫性能优化经过第一轮对电影榜单数据的统计,得到短评总数有一千四百万条。传统单线程爬取完全无法获取所有的短评信息。针对网络爬虫这种IO密

13、集型的应用场景,多线程、多进程能够很好的解决并发访问的问题。使用Python3中的multiprossesing库对访问进行多线程加速。同时使用time库对访问频率进行控制。由于单次请求返回时间的不确定性(页面大小,网络情况),我们统计一段时间内Get次数,若超过阈值则在每个请求完成之后进行一个sleep操作以降低总体速度。针对单IP访问数量的限制,建立了一个IP代理池,部署在一台阿里云服务器上,全天候自动在各大代理网站上刺探可用的HTTP/HTTPS代理服务器。网络爬虫程序可直接调用接口获取一个代理IP。若某个IP连续请求失败次数超过阈值,可以立即更换代理IP,以躲过豆瓣晚上对爬虫的限制。针

14、对爬虫需要全天候运行的特点,使用Git作为源代码管理工具,分别管理开发分支与稳定版本分支,将稳定版分支实时同步到一台阿里云服务器上,并合理设计数据序列化保存格式,实现全天候运行的能力。2.5 本章小结本章内容从工程的第一个需求出发,逐步迭代开发了一个具有针对目标站点完备功能和高运行效率的网络爬虫程序。在连续运行4天后爬取了豆瓣电影Top250榜单中所有电影共计一千四百余万条影评信息,并构建初步的影评数据库。第三章 影评分析推荐系统3.1 推荐系统综述互联网的出现和普及给用户带来了大量的信息,满足了 用户在信息时代对信息的需求,但随着网络的迅速发展而带 来的网上信息量的大幅增长,使得用户在面对大

15、量信息时无 法从中获得对自己真正有用的那部分信息,对信息的使用效 率反而降低了,这就是所谓的信息超载(information overload) 问题。信息超载问题一个非常有潜力的办法是个性化推荐系统,它是根据用户的信息需求、兴趣等,将用户感兴趣的信息、产品等推荐给用户的个性化信息推荐系统。和搜索引擎相比推荐系统通过研究用户的兴趣偏好,进行个性化计 算,由系统发现用户的兴趣点,从而引导用户发现自己的信息需求。一个好的推荐系统不仅能为用户提供个性化的服务, 还能和用户之间建立密切关系,让用户对推荐产生依赖。3.1.1 推荐系统的概念和定义推荐系统的定义有不少,但被广泛接受的推荐系统的概念和定义Resnick和Varian在1997年给出的:“它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程”。推荐系统有3个重要的模块:用户建模模块、推荐对象建模模块、推荐算法模块。通用的推荐系统模型流程如图所示。推荐系统把用户模型中兴趣需求信息和推荐对象模型中的特征信息匹配,同时使用相应的推荐算法进行计算筛选,找到用户可能感兴趣的推荐对象,然后推荐给用户。3.1.2 推荐系统的形式化定义推荐系统的形式化定义如下:设C是

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号