1 / 12
文档名称:

基于Scrapy的GitHub数据爬虫.doc

格式:doc   大小:41KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于Scrapy的GitHub数据爬虫.doc

上传人:ying_xiong01 2017/8/24 文件大小:41 KB

下载得到文件列表

基于Scrapy的GitHub数据爬虫.doc

文档介绍

文档介绍:基于Scrapy的GitHub数据爬虫
摘要作为最大的社交编程及代码托管网站,GitHub提供了丰富的数据来源。基于Python开源框架Scrapy设计实现了一个Web爬虫,能对GitHub的资源抓取和分析,并进行了结构化处理和存储,可为后续数据分析提供基础。介绍了GitHub爬虫的设计原理、算法的实现方式,对实验结果进行了分析。
【关键词】网络爬虫数据爬取 Scrapy GitHub Python NoSQL
数据产生于各行各业,在互联网时代大数据概念提出后,人们发现自己手中的数据不再毫无用处,通过强大的技术手段,无形的数据可转化为有形资产。麦肯锡公司的报告指出数据是一种生产资料,大数据是下一个创新、竞争、生产力提高的前沿。世界经济论坛的报告也认定大数据为新财富,价值堪比石油。GitHub是一个巨大的数据宝库,吸引了大量的开发人员与研究人员入驻。2014年的《GitHub中国开发者年度报告》指出,目前 GitHub 上的注册用户数量已经超过1000万。由于网站托管的开源项目众多,访问的流量也呈爆炸性增长。要想从数千万程序员中快速、准确地抓取所需要的信息变得越来越困难,所以必须使用自动化工具才能较容易的抓取下来。
本文设计并实现了一个基于Scrapy框架的Web数据爬虫,从GitHub抓取大量用户数据信息,下载到本地,进行了结构化处理和存储,为之后做数据分析提供基础。
1 网络爬虫与Scrapy
所谓网络爬虫,就是抓取特定网站网页的HTML数据。网络爬虫从一个存放URL的集合开始进行爬取,首先从队列中获取一个URL并下载此网页,提取该网页中的其它URL并放入队列中。此过程将重复直至关闭。常见的网络爬虫及其爬行策略包括:
(1)广度优先爬虫,一般全网搜索引擎的网络爬虫使用广度优先的爬行策略。
(2)重新爬取已有的页面的爬虫,目的是获得数据的定期更新。
(3)聚焦爬虫,也叫定向爬虫,为很多垂直搜索引擎使用,采取特定的爬行策略来爬取特定类型的网页。本文所研究的正是这一类型的网络爬虫。例如,网页上的某个特定主题或语言、图像、MP3文件等。
Scrapy是用Python开发的一个开源的Web爬虫框架,可用于快速抓取Web站点并从页面中高效提取结构化的数据。Scrapy可广泛应用于数据挖掘、监测和自动化测试等方面,提供了多种类型爬虫的基类,如BaseSpider、SitemapSpider等。
2 基于Scrapy的Github数据爬虫的设计
Scrapy原理
Scrapy是基于Twisted异步网络库来处理通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。其工作原理为:首先从种子URL开始,调度器会传给下载器进行下载,之后会交给爬虫进行分析,根据分析结果进行不同处理。如果是需要进一步爬取的链接,这些链接会传回调度器;如果是需要保存的数据,则被送到项目管道组件进行后期处理,包括详细分析、过滤、存储等。此外,在数据流动的通道里还允许安装各种中间件,进行必要的处理。
GitHub数据爬虫
GitHub网页结构与数据分析
GitHub个人主页的主要信息可分为左右两块:左块为个人基本信息,右块为个人相关的项目。个人基本信息包括名字、邮箱、公司、头像等,爬取时会按照编写的爬虫规则全部保存下来,同时右块的项目信息也储存在JSON文件中。格式为:
{
“_id”:
“fullname”:
“mail”:
“username”:
“organization”:
“joined”:
“starred”:

}。
数据定义
Item是保存爬取到的数据容器,使用方法和Python字典类似。根据从GitHub网站上获取到的数据followers、fullname等对Item进行统一建模。从而在Item中定义相应的字段field。:
import scrapy
class GithubItem():
fullname = ()
username = ()
popular_repos = ()

编写提取Item数据的Spider
GitHubSpider是用于GitHub网站爬取数据的类,。定义以下属性和方法:
(1)name属性:定义spider名字的字符串且唯一;
(2)start_urls属性:Spider在启动时从url列表开始进行