APP下载

基于Scrapy的赌博网站数据采集与分析

2020-07-18付顺顺

网络安全技术与应用 2020年6期
关键词:字段爬虫引擎

◆付顺顺

(1.安徽省公安教育研究院 安徽 230088; 2.安徽公安职业学院 安徽 230031 )

赌博问题滋生违法犯罪、对社会安全稳定和人民群众财产安全等造成严重危害。随着互联网的快速发展,利用互联网和网上金融支付手段进行赌博的现象迅速发展。据《人民公安报》报道,2019年全国公安机关共侦破网络赌博刑事案件7200余起,抓获犯罪嫌疑人2.5万名,查扣冻结涉赌资金逾180亿元,这一系列数字表明,我国的防控治理工作面临的形势依然严峻复杂[1]。当前网络赌博的一种重要表现形式就是开设专门赌博网站,采用严密的内部分级制度发展不同级别的会员,邀约赌博人员、利用特定对象设立赌博规则等组织不特定的境内人员,通过各种形式参赌。因此,收集和分析赌博类网站,有助于从源头治理网络赌博案件的发生。网络赌博,作为一个需要大规模不同阶层的人群参与的违法活动,为了保证目标人群的接入方便性,从而要求此类网站需依托于互联网技术存在,而不是像暗网一样。这就使得我们可以使用网络爬虫采集赌博网站数据。

网络爬虫,是实现自动浏览网页和网页数据抓取的计算机应用程序。Scrapy 是使用 Python 编写的爬虫应用框架程序,具有结构简单、使用方便的特点,用户借助Scrapy可以快速浏览下载网页信息,并根据需要保存关键数据为需要的数据格式。目前,Scrapy 被广泛应用于数据挖掘领域,已经发展成为数据挖掘研究领域重要的应用工具。本研究将以某赌博网站为例,基于Scrapy 设计爬虫,并将该爬虫应用其他赌博网站并存储,以期为赌博网站数据的进一步挖掘利用提供基础。

1 基于Scrapy的赌博网站爬虫设计

1.1 Scrapy框架工作流程

Scrapy主要分为5部分:Scrapy Engine(引擎)、Scheduler(调度器)、Spiders(蜘 蛛)、Item Pipeline(数据处理流水线)和Downloader(下载器)如图1所示。

具体流程是:首先,引擎(Engine)将初始URL(s)交给处理该网站的Spider,并在调度器(Scheduler)以Request调度,之后引擎向调度器请求下一个要爬取的URL,调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件转发给下载器(Downloader),一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件发送给引擎,引擎从下载器中接收到Response并通过Spider中间件发送给Spider处理,Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎,引擎将爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器,重复执行直到调度器中没有更多地request,引擎关闭该网站[2]。

1.2 模型建立

原有的赌博网站数据采集同大部分网络爬虫程序一致,主要关注某一具体HTML标签中的内容,如网页head、title等特定标签,并以这些内容作为特征,进行赌博网站的识别。通过研究发现,现在部分赌博网站的特定标签内容不具有实际意义。为了能很好地支持后续研究,提高赌博网站的自动识别率,本文将从初始url出发,并以该url为限定域,采集网站的全部页面内容和存储[3]。具体步骤如下:

图1 Scrapy 框架工作流程

(1)使用Scrapy提供的全站爬取类CarwlSpider,方便在爬虫在工作的时候能自动根据定义的一些规则判断探测到的url链接是否需要下载。

(2)为了避免字段出错,提高数据传递过程的准确性,使用Scrapy中的 item文件集中创建需要爬取的字段属性类,在其他需要的地方实例化该类即可,通过此种方式的被实例化的类的字段可直接被传递到pipelinet文件中集中处理字段值的保存事项。本爬虫中需要在 item 中定义的字段有四个:“url”,当前页面的url;“url_md5”,当前页面的 urlde md5 值,方便检索;“url_text”,页面内容;“url_text_samples”,去除页面内容的标签。

(3)设置一个common文件,放置一些常用的处理函数,比如url的md5处理。

(4)在setting文件中打开自动接收并处理的pipeline管道,并在 pipelines中设置所有数据的存储和处理,本爬虫采用的是csv存储。

(5)突破反爬虫机制,当前大部分网站的反爬虫策略会对访问用户的User Agent进行检查,为保证爬虫的有效进行,收集当前用户还在使用的浏览器的User Agent,在每次请求页面时随机替换。

(6)将 robot协议改为不要遵守,避免寻找网站里面的robots.txt,导致爬虫会很快停掉。

(7)创建analysis.py,对采集到的数据进行简单分析。

2 基于Scrapy的赌博网站爬虫实现

2.1 建立爬虫

由于 Scrapy是一个框架,为了能正常使用这个框架的各个中间件和接口,需要项目自动创建,具体命令:

scrapy startproject 爬虫项目名

此时只是创建了一个工程框架,但还没有爬虫。接下来,创建爬虫文件,在Scrapy中提供了多种爬虫模板,由于本爬虫时整站爬取,故使用CarwlSpider,具体命令如下:

scrapy genspider -t crawl vns36101 vns36101.com

其中,通过-t指定使用 crawl模板创建crawlspider整站爬虫,爬虫的名字是vns36101,要爬取的域名范围是vns36101.com。

2.2 实现爬虫主文件

通过使用 crawl模板创建crawlspider整站爬虫时,在爬虫主程序文件中重点只需编写两项内容。首先是url链接规则分析,由于本爬虫时为了重点保存页面,因此我们 Rule规则的设为LinkExtractor(allow=r'.*'),“.*”,即正则表达式的所有页面。其次是编写页面解析字段,本例中采用的是 ItemLoader实例化在items中写好的本爬虫的item对象,包含四个字段。本页面主要代码如图2所示。

2.3 实现爬取字段

在scrapy中定义结构化字段,都在items.py中。在数据通过return到此处是还可以通过MapCompose加载自定义的处理字段的函数。本爬虫在处理 url_text_samples时使用了一个去除所有空格和换行符的函数,使得该字段存储的都是文本,具体如图3所示。

图3 items.py

2.4 实现数据存储

在pipelines.py中创建本爬虫中使用的时csv格式存储,具体参考如图4。

图4 pipelines.py

3 数据分析

为了可视化该赌博网站的主要关键词,在本爬虫中还实现了简单的网页内容分析[4-5]。具体分析方式时将爬出获取的整站数据里面的url_text_samples字段的值读取之后合并,随后用jieba分词进行分词,,得到词文件之后采用,textrank算法抽取该网站的关键词,最后通过wordcloud将该网站的关键词的其云图生成如图5所示。

图5 词云图

通过具体分析发现,在该赌博网站中,关键词的前50个中具有非常明显的博彩、彩票、投注等词这,这些特征对实现进一步分析有非常强的指导意义,如图6。

图6 前50个关键词

4 结语

本文基于 Scrapy框架实现赌博网站爬虫,通过 crawlspider模板的整站爬虫,达到了预期爬取数量和质量。此外通过简单分析,得知赌博网站的整个网站的文字特性非常强,可以用于指导进步对赌博网站的分析。

猜你喜欢

字段爬虫引擎
利用网络爬虫技术验证房地产灰犀牛之说
带钩或不带钩选择方框批量自动换
基于Python的网络爬虫和反爬虫技术研究
新海珠,新引擎,新活力!
车坛往事4:引擎进化之屡次失败的蒸汽机车
目前互联网中的网络爬虫的原理和影响
浅谈台湾原版中文图书的编目经验
大数据背景下校园舆情的爬虫应用研究
蓝谷: “涉蓝”新引擎
无正题名文献著录方法评述