资源描述
文档来源于网络,文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。文档如有不当之处,请联系本人或网站删除。,CONTENTS,目录,课题综述,1,研究过程,4,目前现状,2,研究结论,5,研究目标,3,参考文献,6,目录页,绪论,PART ONE,选题背景及意义,网络爬虫是一种自动搜集互联网信息的程序。通过网络爬虫不仅能够为搜索引擎采集网络信息,而且可以定向采集某些网站下的特定信息,如文章信息,租房信息等。本文通过,python,实现了一个基于构造,URL,地址的多线程爬虫程序。本论文阐述了网络爬虫实现中一些主要问题:如何构造,URL,地址;为何要实现多线程,以及如何利用,scrapy,;系统实现过程中的数据存储;网页信息解析等。通过实现这一爬虫程序,可以搜集某一站点的信息,并将搜集到的信息存入数据库。,选题背景,【关键字】,网络爬虫,多线程,,python,,,scrapy,,,mongodb,,,php,mysql,80,%,选题意义,搜索引擎作为一个辅助人们检索信息的工具。但是,这些通用性搜索引擎也存在着一定的局限性。不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。为了解决这个问题,一个灵活的爬虫有着无可替代的重要意义。,有效信息,广告、无用信息,选题背景及意义,对于网络延迟的处理,并且能够开启,HTTPCHACHE,极大限度的提高爬取速度,伪造代理信息,表单等,让目标网站,认为你是安全的,具备可视化显示,以网页的形式有好的显示数据,并提供简单的搜索功能,能将数据简单分类,智能推荐,研究目标,A,C,研究目标,B,使网络爬虫高效灵活,在主题网,站中尽量全面的爬取信息,并且,能够自动构造,URL,,递归调用自身,开启多线程快速的爬取,准确提取有效信息,存储到数据库,D,整合数据信息,并以,json,格式存储至,Mongo,,方面各个平台使用,通过脚本程序,迁移到,Mysql,为依赖关系较强的项目使用,E,目标网站地址:TWO,网络爬虫基础理论学习,构造,URL,、多线程、强大的抓取能力、信息提取任务,python,、,scrapy,、,mongodb,2016.04.3,2016.04.10,2016.04.17,2016.04.24,2015.05.1,2016.05.8,2016.05.15,2016.05.22,2016.05.29,php,、数据可视化显示,研究方法,步骤一,步骤二,步骤三,步骤四,步骤五,通过,Internet,查询网络爬虫运行机制,基本原理,根据所爬取的网站设计自己的爬虫,了解爬虫理论机制,学习,Python,,,Scrapy,框架的搭建,,Mongodb,的简单操作,,Laravel,,,bootstrap,框架学习、编写、调试,学习基础知识,老师的多次面谈和邮件交流,解决了一些理论的疑点和实践上的难点,指导了爬虫的设计和利弊分析,提供了很多的帮助,老师教导,设计和学习完基础知识后,搭建了繁琐的环境,在,Windows,下进行了爬虫的开发、调试,最终成功的实现了信息的爬取与提取,爬虫的编写与调试,将爬去下来的数据,通过脚本程序进行数据转换,利用网页技术可视化显示,可视化显示,研究步骤,目录页,关键技术与难点,PART THREE,关键技术,主爬虫的设计编写,数据的转换与显示,Spider,主爬虫文件的编写,利用,Scrapy,根据网站的自身特性构建,URL,,将抓取下来的网页信息进行信息提取,并将有用信息存储到,mongo,数据库,监测数据库插入情况,可视化显示,将,Mongodb,中的数据通过脚本程序复写到,MySQL,利于网站依赖关系处理,用,Laravel,框架编写后台控制逻辑,友好的,Bootstrap,前台显示。,Scrapy,Scrapy,环境搭建需要导入的一些关键包:,python2.7,、,lxml,、,zope,、,Twisted,、,pyOpenSSL,、,pywin32,、一定要注意版本,国内一些也没有,安装依赖包就会将很多人拒之门外。,Mongodb,启动脚本:mongod-dbpath./data,依赖包:pymongo,主要类:Script2Pipeline(object),pymongo.MongoClient(),tdb=client,self.post.insert(scriptInfo),Spider,关键代码:src2Spider(scrapy.Spider):,parse(self,response):,scrapy.selector.Selector(response),new_url=self.url+str(self.pageNum)+.htm,yield Request(new_url,callback=self.parse),Data,提取字段:title、desc、content、tag,主配置:USER_AGENT,COOKIES_ENABLED,CONCURRENT_REQUESTS,HTTPCACHE_ENABLED,MONGODB_CONFIG,技术难点,VS,全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,为了解决大规模数据管理计算,在金字塔计划夭折后,最终也倒向了雅虎牵头的,Hadoop,开源项目,百度,Google,Google 的使命是整合全球范围的信息,当搜索引擎抓取到的结果越来越多时,保证存储和查询速度的难度越来越高,研发Caffeine、Pregel、Dremel三种技术以解决这些问题。,万网抓取率:,25%,大数据管理:,Hadoop,全球市场份额:,8.13%,万网抓取率:,80%,大数据管理:,Spanner,全球市场份额:,67.49%,案例对比分析,目录页,研究成果与应用,PART FOUR,01,完成了主题爬虫编写,两条爬虫同时爬取目标网站四个多小时,共提取出了有效信息,85000,条,以,json,格式,每一万条数据一张表的形式,保存至,mongodb,数据库,03,通过,laravel,。,bootstrap,框架利用,MVC,框架,将数据优雅的显示到前台,并提供简单的查询功能,但搜索功能还是不尽人意,在多重模糊查询中由于,mysql,左连接的缺陷是的搜索速度非常的缓慢,有时还可能拖死,mysql,数据库,02,将,mongodb,数据库中的数据经过整合,首先使用自带的,CSV,作为中间件进行转换时,由于,CSV,文件的单个单元格最大 存储32,767 个字符造成数据截取丢失,编写自适应错误,脚本程序将,mongodb,中的数据转换到了,mysql,数据库,成果形式,成果形式 脚本之家主爬虫代码片段,数据成果存储展现形式,应用前景,通过编写灵活的爬虫,简单有效的垂直爬取主题网站,踢去有用信提取,并作统计分析,保存至数据库,提供快速查询接口。,垂直化爬取,通过垂直化爬取的数据量比较小,在存储和查询方面都会大大提速,并且精度更高,信息使用率增高,减少 能量消耗,解除大数据管理,定向爬去网站信息,并进行学习分析,提高只能利用,判断该行业发展情况和未来走向,做出及时防范,数据分析,Spider,DATA,目录页,论文总结,PART FIVE,论文总结,笑看历史,小试牛刀,闭关思修,山科论剑,Summary,一个多月的开发,回头望去,困难很多,但通过查阅书记,网络资源,以及老师的指导,已经没有什么困难可以让自己放弃,在未来的生活学习中也会将这种学习过程延续下去,经过基础知识的储备和项目理论的设计,在编写,Spider,主文件递归调用时、还是多次出错,引入,mongo,数据库操作时,初始化函数也很不尽人意,数据转换脚本中,由于字符编码和数据量过大(,10000/table,)引起了数据丢失,与宕机现象,通过上网、书籍查询,自主的完成了基础,python,,,scrapy,,,php,mongodb,,,laravel,,,bootstrap,知识的学习,培养了自学体系,多次与老师探讨,URL,构造的设计,数据的保存形式,以及搜索最快最准确的方式,导师对不成熟的设计及时做出了矫正,并在,Spider,的递归调用,数据迁移脚本的编写做出了指正。,02,03,04,01,致谢,THANKS!,大学生活即将结束,在此,我要感谢所有教导我的老师和陪伴我一齐成长的同学,他们在我的大学生涯给予了很大的帮助。本论文能够顺利完成,要特别感谢我的导师赵中英老师,赵中英老师对该论文从选题,构思到最后定稿的各个环节给予细心指引与教导,使我得以最终完成毕业论文设计!,最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位老师表示感谢!,恳请各位老师批评指正!,
展开阅读全文