基于Python定向爬虫技术对微博数据可视化设计与实现

2020-10-09 10:24邱俊杰
电脑知识与技术 2020年22期

邱俊杰

摘要:互联网自诞生以来,一直在推动信息技术以及相关产业的快速发展。据Intemational Data Corporation(国际数据公司)发布的《数据时代2025》显示,从2018年起全球每年产生的数据增长到了175ZB,相当于每天产生491EB的数据。在这个信息爆炸的时代,大数據分析技术和人工智能随之产生,如何从复杂的数据信息库中获取我们所需要的信息,如何从这些信息中提炼出直观的数据模型和结论,该文采用Python语言以定向爬取微博为例重点阐释这两个问题。

关键词:Python;数据分析可视化;微博数据

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2020)22-0043-02

开放科学(资源服务)标识码(OSID):

1 引言

随着互联网上的数据量日趋庞大,同时近两年国家鼓励大众创业万众创新,对于新晋互联网企业来讲,最大的障碍就是推广产品和吸引流量。很多公司采用信息轰炸的粗暴方式向大范围用户推送广告。显而易见,这些方法是非常低效、浪费资金而且不道德。本文是用大数据分析方法,快速高效获取并分析客户(互联网公司、政府)的指定领域或关键词,最后反馈分析结果给客户(互联网公司、政府),根据分析结果可以帮助企业或政府制定相应的策略实现双赢。

2 选择Python的原因

随着互联网的快速发展、物联网的兴起以及计算机硬件系统不断更迭,大数据分析技术、人工智能技术等学科应运而生,新兴学科的发展让Python语言有了适合的位置。在机器爬虫领域,Python可以说是占据霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集、处理。拥有非常便捷高效的爬虫框架,如Scrapy、PySpider、Selenium等等。

网络爬虫,我们可以将互联网比作一张大网,而爬虫便是在这张网上抓取猎物的蜘蛛。[1]Python语言简单优雅的开发理念,Python比较容易配置,对字符的处理也有很多种选择,Py-thon也有丰富的网络抓取模块。Python爬虫从网站某一个页面开始,读取内容,找到相关链接地址,然后通过链接地址寻找下一个网站,一直循环下去。[2]如果把整个互联网当成一个网站,那么机器爬虫就可以把互联网上所有的网页都抓取下来。[3]爬虫可以抓取某个网站或者某个App的数据内容,提取有用的信息。也可以模拟用户在浏览器上的操作,实现自动化运行。爬虫框架如图1。

(1)URI管理器:管理待爬取的URL集合和已爬取的URL集合,传送待爬取的URL给网页下载器[4];

(2)网页下载器:爬取URL对应的网页,存储成字符串或者JSON格式,然后传送给网页解析器;

(3)Python爬虫通过URL管理器,判断是否有待爬的URL,如果有需要爬的URL,通过调度器进行传递给下载器,下载URL包含的内容,并通过调度器传送给解析器,解析URL包含的内容,并将有价值数据和新的URL列表通过调度器传递给应用程序,并输出价值信息的全过程。[5]

3 爬取对象与过程

3.1爬取对象

本次研究对象是微博平台上与某热点主题相关的话题数据分析,本次主题以“手机”为例,爬虫采取的编程语言版本是Python3.7。微博是一个不同用户之间可以共享文字、图片、视频、音频等信息的公共平台,微博蕴藏的数据量是十分庞大的,而这些信息的价值是不可估量的。所以,如何提取出有价值的信息,是本文的重点部分。

3.2 爬取思路

爬取思路如图2,与小微企业不同,由于新浪微博设置了多种反爬虫机制,所以我们必须采用IP地址池、限制流量等多种反爬虫机制,通过模拟登录微博,识别验证码,自动抓取和分析微博网页源代码,自动提取网页数据实现微博数据自动化抓取,最后结构化存储数据以便日后使用。[6]

3.3 模拟登录

新浪微博这种公共平台为了增加自家用户流量,限制很多内容必须登录才能查看,而机器爬虫并没有在这些网站上注册成为用户,这时候就需要使用cookies来模拟用户登录,方法如下:

(1)使用谷歌浏览器登录到新浪微博官网并使用已经在新浪服务器上注册的用户登录进去;

(2)利用浏览器的开发者模式找到网页源码中post部分提取cookies字符段;

(3)将cookies字符段加入爬虫程序源码中。

3.4 内容爬取

模拟登录之后可以进行下一步操作,微博平台内容分类多,需事先构思好要爬取的目标数据。首先分析目标网站源码,打开微博主页,以“手机”为关键词搜索为例,获取当前URL,即爬取开始页。然后导人pymysql、request、re等相关类库函数,根据网页源码的标志词编写相应的正则表达式,以获取到用户内容、用户手机品牌名称、用户地区、性别、生日、评论数、点赞数、转发数等数据。最后把获取到的数据结构化存储到MySQL数据库中。

为了保证最后数据分析结论具有研究意义,爬取规则采取深度优先,加大爬取时间跨度,尽可能多的爬取相关数据,保证分析出的数据具有客观性。

3.5 相关问题

在数据爬取的过程中为了保证爬虫程序的鲁棒性,本文对爬虫程序进行多种细节修改:1)增加IP地址池,让程序可以利用多个IP轮流爬取数据,避免被微博平台定向封禁;2)为了降低爬虫爬取时对服务器带宽的影响,降低被系统发现的风险,利用sleep函数延迟爬取数据,以模拟人为操作的特征;3)利用header函数,用来模拟浏览器访问平台数据,以混淆微博的反爬虫机制。

3.6 数据分析与可视化

本文考虑从用户手机品牌、评论转发、男女占比等维度分析大数据,主要依据统计学方法。具体步骤如下: