APP下载

基于XPath的天气数据的爬取研究

2021-11-17史雅婷梁洪炎吉卓嘎强巴卓玛

江苏通信 2021年5期
关键词:爬虫网页代码

王 康 史雅婷 梁洪炎 吉卓嘎 强巴卓玛

西藏民族大学信息工程学院

0 引言

在大数据时代,谁拥有了数据,谁就有更多的筹码。气象服务是这个时代必不可少的部分,人们每天的出行计划需要依靠今天的天气状况来定。气象部门每天通过手机、电视、报纸、广播、短信来告知人们今天的天气状况,以防范自然灾害等突发状况。截至2018年,全国共有661个市,每小时统计一次,在一天内就收集到了661×24=15 864条数据。

网络爬虫本质上是利用程序在网上搜集有用的数据,是一种按照一定的规则,自动抓取互联网信息的脚本。开发者可以随意地扩展各个组件,来实现抓取逻辑。网络爬虫能帮助人们快捷、方便地获取天气网特定城市近7天内的天气预报数据。

网络爬虫有很多类型,不同类型的爬虫适用于不同的场景,本文提到的爬虫为批量性爬虫,这种爬虫一般适用于用户明确自己想要的信息或者知道所需信息的网络结构位置。但在一些大数据或者超大数据的分析与处理中,一般要用增量型爬虫,其是一种没有明确限制的爬虫,信息量大且比较杂乱,需要用机器学习和深度学习对爬去的信息进行分析和处理,而且增量型爬虫容易被网站反爬虫程序检测。除此之外,还有深度网络爬虫等。

1 XPath及其应用

XPath是在XML文档中查找信息的一种语言,用于在XML文档中通过元素和属性进行导航。XPath使用路径表达式来选取XML文档中的节点或节点集。XPath依赖于Python中的lxml第三方类包。XPath使用路径表达式选取XML文档中的节点或节点集。正则表达式是一个特殊的字符序列,用来检查一个字符串是否与某种模式匹配,通过特殊的语法来表示。正则表达式依赖于Python中的re模块。部分正则表达式常用符号如表1所示,正则表达式的书写规则较多,这里不再一一赘述。XPath解析的原理如图1所示。

表1 具体正则表达式常见符号(部分)

图1 XPath解析的原理

1.1 lxml,xwlt,matplotlib

lxml用于解析XML和HTML文件。可以快速定位,搜索、获取特定内容。其支持XML Path Language (XPath) 和 Extensible Stylesheet Language Transformation (XSLT),并且实现了常见的ElementTree API。lxml模块中常用的有lxml.html,lxml.etree,lxml.cssselect,lxml.BeautifulSoup。在天气数据爬取中,本设计主要用到的是lxml.etree模块。Xwlt是Python用来在Excel写入数据和格式化数据的工具包,是用来生成兼容Excel997/2000/XP/2003,OpenOffice.org CalcGnumeric的表格库。本文利用 xlwt模块将爬取的天气数据写入Excel文件。Matplotlib是Python中类似MATLAB的绘图工具,文章引入Matplotlib模块将爬取的天气数据以图片形式保存,并且引入了 xlwt模块以excel形式保存数据。

1.2 数据爬取

首先,得到详情页的url,随机获取一个浏览器的表头,将获取的浏览器信息赋给agant_chose,其核心代码是agant_chose = random.choice(agant)

其次,确定要爬取天气数据的城市,作者以是衡阳、咸阳、西安、成都、广州5个城市为例,进行7天天气数据的爬取。爬取天气数据的核心代码是:html=etree.HTML(data.text)

first_weather=html.xpath(‘/html/body/div[5]/div[1]/div[1]/div[2]/ul/li[1]/p[1]/text()’)。上述代码只是对某个节点的数据的爬取,而读者可以根据自己想要的数据所处的位置编写代码来爬取自己想要的节点或节点集数据。根据代码所写的html路径所选取的节点依次将爬取的近7天的天气数据进行保存。数据爬取过程如图2所示。

图2 爬取数据的过程

2 数据可视化处理

利用python语言中带的xwlt模块和matplotib模块将保存的数据进行可视化处理,让数据可以用折线图和Excel表格形式保存,让数据变得更加生动形象并且能够更好地利用。将爬取的天气数据写入excel文件,核心代码是excelpath=(‘{}.xls’.format(city_name[number])

Workbook=xlwt.Workbook(encoding=’utf-8’)。将数据用图片的形式保存的核心代码是pyplot.plot(x,highest_temperature)

pyplot.plot(x, lowest_temperature),以西安为例的excel表格的部分数据如图3所示。

图3 以excel形式保存的部分天气数据(西安)

3 结束语

本文介绍了利用XPath爬取网页数据的相关原理,并爬取了一些天气数据。利用XPath爬取网页数据简单而且灵活,相对于使用正则表达式稍简单,可以在知道数据爬取的HTML位置或者是爬取的数据的网页位置相对固定的情况下使用,适合刚接触Python爬虫的人。在爬虫开发中,为追求高效可以优先选择正则表达式。

猜你喜欢

爬虫网页代码
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
创世代码
创世代码
创世代码
创世代码
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
大数据环境下基于python的网络爬虫技术