基于python语言的web数据挖掘与分析研究

2018-12-18 01:08吴爽
电脑知识与技术 2018年27期
关键词:数据分析

吴爽

摘要:该文介绍了Web采集技术,并对其实现原理及关键技术进行研究分析,着重介绍了基于Python语言的爬虫数据采集技术在Web信息采集中的应用,提出以Python及相关库为主要工具,并结合模块化实现方法,建立基于Python技术的Web文本信息采集系统框架,并以百度百科为例,实现信息的快速搜索与相关信息的数据挖掘,并对检索数据进行分析和研究,得出相关结论。

关键词:Python;Web;数据爬取;数据分析

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)27-0001-02

随着互联网技术的快速发展,Web作为广大互联网用户共享信息而发展起来的一种internet应用,其承载的信息量呈几何级数增长,Web的应用与发展为人们带来了巨大的社会效益和经济效益,已经成为用户获取信息的重要来源。Web信息急剧膨胀的同时,如何有效筛选和利用信息面临巨大的挑战。同时,Web内容的多样性与非结构性,导致有效信息获取困难。借助于Python技术实现Web信息的有效提取和挖掘,能够在多个领域发挥重要作用,极大地提高数据搜集与分析的效率,促进社会生产力的提升。

1 Web信息挖掘技术概述

1.1 web数据挖掘技术定义

Web数据挖掘是通过模拟用户正常的浏览器行为,并设置一定的规则,从而获取Web页面指定信息。Web数据挖掘的最终目的是将非结构化的信息从海量的信息提取并以统一的方式进行存储(以CSV、JSON、XML等模式存储)。在此过程中,将涉及网络爬虫、数据结构化与正则表达式等多种关键技术。

1.2 数据挖掘技术应用优势

随着互联网技术的应用与普及,网络中信息资源极为丰富,但大多数信息以无结构的文笔形式存在,导致信息采集与归类变得极为困难。在数据挖掘技术出现之前,用户要将有效的信息进行采集和归类须采用手动复制粘贴的方式,不仅耗时耗力,而且数据质量较差,难以实现数据采集与分析的自动化。而基于Python语言的网络爬虫技术,具有速度快、准确性高等特点,能够有效提升数据采集与分析效率,提高数据采集质量。同时人工操作难免存在数据错误、遗漏等问题,在统计较大数据时,纠错难度极大,而借助网络爬虫技术,数据准确性较高,即使存在问题,用户可通过规则、程序调整即可完成纠错,具有无可比拟的应用优势。

1.3 网络爬虫工作原理

网络爬虫是根据制定的规则对Web页面进行遍历查询,从而自动抓取有效信息的脚本。网络爬虫的主要原理是通过互联网指定的子集合中读取URL,访问相应的Web内容,并遍历Web页面所包含的链接,并遍历链接继续爬取包含的子页面内容,从而完成数据的收集、分类和整理。

1.4 不同爬虫算法的比较

当前网络爬虫核心算法主要包括广度优先、深度优先、Partial PageRank及Opic爬虫算法。不同爬虫算法各有优劣,应结合实际应用场景进行合理选择。

1.4.1 广度优先策略

该方法是根据Web内容目录层级,先爬取起始页面同一層级的页面,而后将爬取的链接放在队列中,从而实现向外延伸,尽可能多地获取链接信息,并不断向下一层级深入。该方法能够实现爬虫的并行处理,提高Web信息抓取速度。因此,广度优先策略是应用最为广泛的爬虫算法。同时,该算法不足之处在于挖掘深层次目录所花费的时间较长。

1.4.2 深度优先策略

深度优先策略是指爬虫依次访问当前页面直至最深目录,并在完成一个分支后返回,继续爬去另一个分支,当所有的链接遍历结束后,爬虫任务才会结束。该方法能够保证爬虫挖掘信息的深度,但在层次较深的站点信息挖掘时将消耗大量的系统资源。

1.4.3 Partial PageRank策略

该算法是爬虫从起始页开始后,根据计算的Web页面PageRank值确定该页面的爬取价值,并优先爬取PageRank值大的页面,从而加快爬虫执行效率,能够取得较好的遍历效果,但可能与全部遍历结果存在一定的偏差,进而导致数据准确性降低。

1.4.4 Opic策略

该算法可被视为一种改进型的PageRank算法,开始前,各页面都会被赋予相同的值,当页面被下载后,其值将平均分配给页面中连接,并情况当前页面的值,爬虫根据值的大小确定优先级,优先下载值最大的页面。该算法不需要迭代计算,适用于实时计算。

1.5 数据结构化存储

大部分信息以无结构的文本形式存在,直接归类和利用存在一定的困难,而通过结构化存储的方式进行存储,即将Web页面中的无结构信息抽取出来并以结构化的方式存储到本地,从而实现数据存储的规范、统一。此过程都是自动化执行操作,不需要人工干预,用户可结合应用场景自行选择数据库、XML、CSV等存储方式。如选用数据库作为存储形式时,Web信息则以二维表结构的形式存储,法具有速度快、准确性高等特点,能够满足多线程数据挖掘时数据存储要求。

1.6 正则表达式

Web页面大多为Html格式存在,而Html页面是由各种语义对象构成,不同的对象均存在不同的标记,通过对Html页面进行解析,并基于正则表达式进行匹配,能够实现对特定字符串信息的查找与提取。例如,在爬取某包含“is”的Web页面源代码时,可通过matchObj = re.match( r'(.*) is (.*?) .*', line, re.M|re.I)的方式进行信息提取,从而对包含“is”的字符串进行自动匹配并输出相关内容。在此案例中,( r'(.*) is (.*?) .*', line, re.M|re.I)即为匹配的正则表达式,能够为数据提取提供方法。此外,为了适应页面变化、网站升级等,确保匹配更加稳定,用户还可以使用Python自带的模块及第三方库,对Web页面内容进行解析和提取。

2 Web数据挖掘系统设计

在系统设计和编写时,应按模块化思想对系统功能进行合理划分,实现模块功能分类,便于代码维护和调试。

2.1 爬虫功能设计

通过设置定时任务,当符合任务执行条件时,系统根据特定的起始Web页面进行正则匹配,并对符合正在匹配的链接进行抓取,对其中包含的符合要求的数据进行抓取。最后,将获得的信息与数据进行对比,如数据库中已存在相关信息则停止,不存在则插入更新信息。例如,根据指定的链接,收集百度百科词条内容,建立链接并分析其页面特征。首先,利用urllib2建立与服务器链接,当服务器收到请求后,返回对应的HTTP应答,脚本内容如下:

fromurllib.request import urlopen

from bs4 import BeautifulSoup

html = urlopen(' https://baike.baidu.com/')

bsObj = BeautifulSoup(html, 'html.parser')

t1 = bsObj.find_all('a')

for t2 in t1:

t3 = t2.get('href')

print(t3)

通过该方法能够获取百度百科页面包含的所有超链接。其次,设置正则表达式,对获取的URL进行筛选和匹配。在此过程中,可使用BeautifulSoup模块获取URL标签,并使用re模块构建正则表达式,以便于筛选符合条件的url。如下所示。

import re

from bs4 import BeautifulSoup

print bsObj。prettify

urls=soup.findAll(”a”,hrel=True)

defgetLink(countryUrl);

html = urlopen(' https://baike.baidu.com/'+ itemUrl)

bsObj = BeautifulSoup(html, 'html.parser')

returnbsObj.finall(“a”,href=re.compie(“”(/item/)((?!:).)* basicInfo-item value”))

links=getLinks(“https://baike.baidu.com/item/%E5%9B%BD%E5%AE%B6/17205”)

whilelen(links)>0

links=getLinks(newCountry)

for link in bsObj.findALL(“a”)

if “href” in link.attrs;

print(links.attrs[‘href]

通过上述方式,对百度百科数据进行筛选与提取,从而下载并获得相应的數据信息。

2.2 爬虫功能设计

根据已下载的Web数据,可借助于Python语言进行相应的处理和分析。例如,我们可以借助numpy数值计算扩展进行数据分析,实现对其中的字词出现频次进行分析,实例如下:

importnumpy

segStat=segmentDataFrame.groupby(

by='segment'

)['segment'].agg({'计数':numpy.size}).reset_index().sort(

columns=['计数'],

ascending=False)

在此基础上,借助第三方库WordCloud生成大数据词云图,

fromwordcloud import WordCloud

importmatplotlib.pyplot as plt

wordcloud=WordCloud(

font_path='字体路径\simhei.ttf',

background_color='black')

words=fSegStat.set_index('segment').to_dict()

wordcloud.fit_words(words['计数'])

plt.imshow(wordcloud)

plt.close()

从而得出相关页面的词频词云图。由此可见,中国、人民、党和发展等词汇出现次数较多。

3 结束语

本文着重介绍了利用Python语言进行Web数据进行挖掘和分析的原理及方法,重点分析了网络爬虫的算法优势及应用环境,并就正则表达式、数据存储方式、数据抓取过程及分析方法进行了阐述,可见基于Python语言的网络爬虫在数据抓取与应用中具有显著的优势,能够实现数据提取的自动化、个性化,极大提升了数据搜索与分析的效率与质量。在数据爬取过程中,用户应考虑数据爬虫算法优化和调整,结合Python多线程技术,实现下载缓存优化,提高数据挖掘的性能。

参考文献:

[1] 熊畅.基于Python爬虫技术的网页数据抓取与分析研究[J].数字技术与应用,2017(9):35-36.

[2] 陈琳,李容.基于动态Web的Python多线程空气质量数据程序设计[J].成都信息工程大学学报,2016,31(2):180-184.

[3] 齐鹏,李隐峰,宋玉伟.基于Python的Web数据采集技术[J].电子科技,2012,25(11):118-120. [通联编辑:王力]

猜你喜欢
数据分析
浅析大数据时代对企业营销模式的影响