论文部分内容阅读
我们生活在大数据时代,数亿人花费大量的时间在社会化网络上以史无前例的速度分享、交流、联系、互动,并且产生了海量的用户数据,这些丰富的数据为学术研究和产品开发提供了巨大的机会和潜能。对于提供API社会化网络平台,我们可以方便地获取数据进行研究,对于不提供API的社会化网络平台,则需要编写爬虫程序来获取数据,这也是本文的研究内容。本文以国内最优秀的社会化问答社区知乎网为研究对象,研究知乎网爬虫的相关技术。本文主要的研究包括:对使用Ajax技术的网页的解析、爬虫爬取策略的研究、网站的模拟登录、多线程设计、URL去重设计等。本文工作如下:首先,分析知乎爬虫的主要问题并设计爬虫的主要模块。在这一部分本文介绍了爬虫设计相关的知识,如Ajax、URL去重、多线程、网页解析。也介绍了社会化网络的相关知识,如社会化网络的表示方式、中心性、派系等。在这一部分,设计并实现了知乎爬虫的的主要模块,如模拟登录模块、用户解析模块、问题解析模块、话题解析模块、数据存储模块、控制模块、用户网络邻接矩阵生成模块,并且实现了爬虫的基本功能。其次,设计了知乎全网用户爬虫和知乎全网问题爬虫。在这部分主要研究了爬虫的爬取策略。对于全网用户爬虫设计了深度优先爬取策略、广度优先爬取策略和基于知乎话题结构的用户爬取策略。对于全网问题爬虫,则是通过知乎全部问题页面获取。在爬取到部分数据后,对数据进行了简单的分析,如用户的构成,问题答案数量的分布。最后,设计了知乎主题爬虫。这部分主要研究了知乎主题爬虫的爬取策略,该策略是基于知乎网结构的广度优先爬虫。在选取一个主题进行爬取并得到数据后,对这部分用户进行了社会化网络分析,分析了其用户网络结构、中心性和派系,获知了知乎社区的结构特点。