推荐星级:
- 1
- 2
- 3
- 4
- 5
基于Python的健康数据爬虫设计与实现
资料介绍
在网络健康资讯研究中,数据获取是首先要解决的问题,但传统抓取工具无法满足多变的数据源,研究高效爬取健康资讯内容新方法迫在眉睫。基于Python的网络健康资讯抓取方案,整合多个数据源,抓取内容更为全面;利用WebDriver和Python的Selenium库,能够较好地应对复杂网络状况,通过多线程技术极大提高爬虫效率。对抓取的癌症数据进行统计分析,对多线程效率进行对比分析,显示爬虫具有良好的适应性。基于Py?thon的网络健康咨询抓取方案能快速抓取网络资讯,为后续科研打下基础。
部分文件列表
文件名 | 大小 |
基于Python的健康数据爬虫设计与实现.pdf | 2M |
部分页面预览
(完整内容请下载后查看)第 18 卷 第 2 期
2019 年 2 月
软 件 导 刊
Vol. 18 No. 2
Software Guide
Feb. 2019
基于 Python 的健康数据爬虫设计与实现
程增辉,夏林旭,刘茂福
(武汉科技大学 计算机科学与技术学院,湖北 武汉 430065)
摘
要:在网络健康资讯研究中,数据获取是首先要解决的问题,但传统抓取工具无法满足多变的数据源,研究
高效爬取健康资讯内容新方法迫在眉睫。基于 Python 的网络健康资讯抓取方案,整合多个数据源,抓取内容更
为全面;利用 WebDriver 和 Python 的 Selenium 库,能够较好地应对复杂网络状况,通过多线程技术极大提高爬虫
效率。对抓取的癌症数据进行统计分析,对多线程效率进行对比分析,显示爬虫具有良好的适应性。基于 Py-
thon 的网络健康咨询抓取方案能快速抓取网络资讯,为后续科研打下基础。
关键词:爬虫;多数据源;Python;网页解析
DOI:10. 11907/rjdk. 181626
中图分类号:TP319
文献标识码:A
文章编号:1672-7800(2019)002-0060-04
The Design and Implementation of Health Data Crawler Using Python
CHENG Zeng-hui,XIA Lin-xu,LIU Mao-fu
(College of Computer Science and Technology,Wuhan University of Science and Technology,Wuhan 430065,China)
Abstract:During the research of online health data,the data acquirement is the first problem to be solved,however the traditional da-
ta crawlers cannot be adapted to the current various data sources. Therefore,a new approach should be adopted to parse health data ef-
ficiently from Weibo,Web portals and other platforms. This article tries to design a new data crawler based on one Web driver offered
from selenium library and implement using Python and its related network library. This data clawer can handle complex net environ-
ment and improve efficiency with the multithread technique. In the end,we analyze the obtained data on topic of cancer and compare
the efficiency under the multithread programming. It shows that the data crawler designed in this article can adapt the net environment
well and be a lot of helps in the further research of online health data.
Key Words:crawler;various data source;Python;Web page parsing
作的重心也要随之变化。
国外针对社交平台(如 Facebook、Twitter)的研究与分
0
引言
析[2-4]较多,而国内针对这一领域的研究还较欠缺。一方
面,相关研究刚刚起步,缺乏相关研究方法;另一方面,缺
乏相关研究数据,深入研究难以展开[5]。新浪微博占据了
社交平台 87%的份额,聚集了大量年轻用户和海量资讯内
容,是中国微博产业的主导力量[6]。微博具有用户基数大、
传播速度快、内容时效性强和数据量极大的特点,是非常
好的数据来源。另外,主流门户网站如网易、新浪、腾讯、
搜狐等,作为老牌的“网络新闻集散地”,仍是用户获取资
讯的主要来源。这些平台拥有大量用户,每天产生海量数
据,并且新闻形式较为统一,是非常方便且有价值的研究
随着生活水平的不断提高和计算机技术的迅速发展,
互联网已经成为大众获取资讯的主要渠道[1],网络资讯形
式与内容也伴随着时代发展产生了巨大变化。在资讯形
式方面,典型的门户网站仍以图文形式的文章为主,新兴
平台的资讯形式则更为丰富,出现了微博、短视频、移动新
闻客户端等格式。在资讯内容方面,除传统的时事新闻
外,健康、娱乐等方面的内容更受年轻人追捧。新型资讯
形式的出现,意味着对于网络数据的研究方法必须作出相
应改变。网络数据内容的变更,意味着数据挖掘与研究工
收稿日期:2018-04-24
基金项目:国家社会科学基金重大计划项目(11&ZD189);湖北省大学生创新创业训练计划项目(201610488038)
作者简介:程增辉(1998-),男,武汉科技大学计算机科学与技术学院学生,研究方向为自然语言处理;夏林旭(1991-),男,武汉科技大
学计算机科学与技术学院硕士研究生,研究方向为自然语言处理;刘茂福(1977-),男,武汉科技大学计算机科学与技术学
院教授、博士生导师,研究方向为自然语言处理。本文通讯作者:刘茂福。
· 61 ·
第 2 期
程增辉,夏林旭,刘茂福:基于 Python 的健康数据爬虫设计与实现
对象。
网民对健康问题较为重视,“微信计步”、“悦跑圈”等
1
微博爬虫
一些健康类型手机应用风靡社交平台,健康类资讯成为人
们分享的热点。医疗卫生信息化使医疗卫生数据以惊人
的几何速度增长[7]。目前,已有针对网络健康数据的相关
研究[8-11],如果能及时抓取网络上的健康资讯并加以深入
分析与挖掘,或许能对网络舆情进行有效检测和引导,同
时能分析出不同平台用户特点和关注点,使之更为个性化
和人性化。然而,网络上的健康资讯十分零散,无法做到
有效整合,而且因为资讯来源和平台不同导致不同资讯在
结构上具有较大差异。因此,健康领域的网络数据研究具
有很大的潜力可以挖掘。
微博用户基数大,资讯的更新与传播速度远远高于一
般网络媒体,是非常好的数据来源。目前针对微博平台的
数据爬虫研究[13-16]大致可分为基于 API、基于网络爬虫和基
于网络数据流 3 种获取技术[17]。然而,微博登录机制复杂,
其提供的 API 存在访问数量、频率等方面的限制。此外,微
博的网页结构与传统网页区别很大,结构更加细碎繁琐。
因此,如果要大规模爬取微博数据,传统爬取方法可能不
再有效,需另辟蹊径。Selenium 是一个自动化测试工具,具
有 以 下 几 个 特 性 :① 可 对 多 种 浏 览 器 进 行 测 试 ,如 IE、
Firefox、Safari、Chrome、Android 手机浏览器等;②支持多种
语言,如 Java、C#、Python、Ruby、PHP 等;③跨平台,如 Win-
dows、Linux、iOS、Android 等;④开源免费[18]。本文爬虫利
用 Python 中 Selenium 开源库的模拟特性,期望实现微博数
据的高效爬取,同时将数据进行结构化存储,使数据更加
条理清晰。
已经开发出一些爬虫工具获取研究数据,但这些爬虫
对社交平台和门户网站的新型网页结构支持不够,在研究
中容易出现各种问题。其往往只针对特定平台进行适配,
不具备普适性。除此之外,由于开发时间较长,缺乏对新
技术的支持,很难适应当前的网络环境。
本文爬虫通过对各平台网页结构的分析,支持微博、
门户网站等主流数据源,在一定程度上保证了数据的完整
性。Python 提供了针对网络协议标准库,对网络协议的各
个层次进行了抽象封装[12],因而十分适合于网络爬虫开
发。本文爬虫以 Python 为技术基础进行开发,综合运用多
个 Python 网络函数库,能够很好地适应当前的网络环境。
1.1 爬取流程
微博爬虫工作流程如图 1 所示。与传统网站不同,由
于新浪微博的限制,需要首先进行登录,之后才可进行数
据抓取。登录以后,选定“新浪健康”账户为种子用户,逐
步解析并获取微博内容,更新用户队列作为后续爬取对
图 1 微博爬虫流程
象。最后对微博进行结构化存储,方便后续使用。
1.2 微博登录
send_keys()函数输入用户名及密码;③利用 click()函数模
拟点击“登录”按钮。登录成功之后,只需维持 driver 便可
方便地访问微博数据。
登录微博后才能爬取数据,因而首先要解决微博登录
问题。与传统的会话方式不同,本文通过模拟用户的登录
动作实现微博登录,这会使新浪微博系统将爬虫程序当作
真正的用户,从而省去诸多麻烦。Python 的 Selenium 库拥
有成熟的模拟特性,其提供了方便的接口用以定位网页上
的按钮与文本框。
1.3 内容获取
登录之后便可进行内容获取。微博网页包含各种内
容及对象,结构复杂,但是每条微博形式类似,一般包括作
者、正文、点赞量、转发量、评论量等。首先通过 Selenium 开
源库中的 driver.page_source()函数进行页面源码抓取,然
后利用正则表达式对网页内容进行筛选。为了方便存储,
将作者、正文、评论量、点赞量、转发量等作为一条记录存
储在数据库中。
微博登录步骤:①初始化 Selenium 库中的 driver,利用
driver.get(url)函 数 获 取 页 面 信 息 ;② 通 过 driver.get_ele-
ment_by_name()函数定位“用户名”及“密码”输入框,通过
driver.get_element_by_xpath()函数定位“登录”按钮,利用
为保证微博爬取的完整性和高效性,本文采取一种基
全部评论(0)