在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
随着人工智能和大数据的发展,本来就风头强劲的Python在近几年更是发展得如日中天。众所周知,Python的应用场景十分广泛,像是在科学计算、游戏开发、web开发框架等方面都发挥了极大的作用,因此夸张一点说,掌握了Python你就无所不能了!下面我们就来看看如何用Python爬取天气数据并解析温度值~
爬取的html 结构
import requests
from lxml import etree
import pandas as pd
import re
url = 'http://www.weather.com.cn/weather1d/101010100.shtml#input'
with requests.get(url) as res:
content = res.content
html = etree.HTML(content)
通过lxml模块提取值
lxml比beautifulsoup解析在某些场合更高效
location = html.xpath('//*[@id="around"]//a[@target="_blank"]/span/text()')
temperature = html.xpath('//*[@id="around"]/div/ul/li/a/i/text()')
结果:
['香河', '涿州', '唐山', '沧州', '天津', '廊坊', '太原', '石家庄', '涿鹿', '张家口', '保
定', '三河', '北京孔庙', '北京国子监', '中国地质博物馆', '月坛公
园', '明城墙遗址公园', '北京市规划展览馆', '什刹海', '南锣鼓巷', '天坛公园', '北海公园',
'景山公园', '北京海洋馆']
['11/-5°C', '14/-5°C', '12/-6°C', '12/-5°C', '11/-1°C', '11/-5°C', '8/-7°C',
'13/-2°C', '8/-6°C', '5/-9°C', '14/-6°C', '11/-4°C', '13/-3°C'
, '13/-3°C', '12/-3°C', '12/-3°C', '13/-3°C' ]
构造DataFrame对象
df = pd.DataFrame({'location':location, 'temperature':temperature})
print('温度列')
print(df['temperature'])
正则解析温度值
df['high'] = df['temperature'].apply(lambda x: int(re.match('(-?[0-9]*?)/-?[0-
9]*?°C', x).group(1) ) )
df['low'] = df['temperature'].apply(lambda x: int(re.match('-?[0-9]*?/(-?[0-
9]*?)°C', x).group(1) ) )
print(df)
详细说明子字符创捕获
除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用() 表示的就是要提取的分组(group)。比如: ^(\d{3})-(\d{3,8})$ 分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码。
m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
print(m.group(0))
print(m.group(1))
print(m.group(2))
# 010-12345
# 010
# 12345
如果正则表达式中定义了组,就可以在Match 对象上用group() 方法提取出子串来。
注意到group(0) 永远是原始字符串, group(1) 、group(2) ……表示第1、2、……个子串。
最终结果:
Name: temperature, dtype: object
location temperature high low
0 香河 11/-5°C 11 -5
1 涿州 14/-5°C 14 -5
2 唐山 12/-6°C 12 -6
3 沧州 12/-5°C 12 -5
4 天津 11/-1°C 11 -1
5 廊坊 11/-5°C 11 -5
6 太原 8/-7°C 8 -7
7 石家庄 13/-2°C 13 -2
8 涿鹿 8/-6°C 8 -6
9 张家口 5/-9°C 5 -9
10 保定 14/-6°C 14 -6
11 三河 11/-4°C 11 -4
12 北京孔庙 13/-3°C 13 -3
13 北京国子监 13/-3°C 13 -3
14 中国地质博物馆 12/-3°C 12 -3
15 月坛公园 12/-3°C 12 -3
16 明城墙遗址公园 13/-3°C 13 -3
17 北京市规划展览馆 12/-2°C 12 -2
18 什刹海 12/-3°C 12 -3
19 南锣鼓巷 13/-3°C 13 -3
20 天坛公园 12/-2°C 12 -2
21 北海公园 12/-2°C 12 -2
22 景山公园 12/-2°C 12 -2
23 北京海洋馆 12/-3°C 12 -3
以上就是用Python爬取天气数据并解析温度值的解析,大家都学会了吗?学习Python还能通过爬虫技术去获取各种页面数据,因此掌握Python不仅仅是编程技术工作岗位的要求,还是提高非编程职业竞争力的需要,大家还不快快学起来~
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
如何使用Python爬虫抓取数据?
Python爬虫应用十分广泛,无论是各类搜索引擎,还是日常数据采集,都需要爬虫的参与。其实爬虫的基本原理很简单,今天小编就教大家如何使用Python爬虫抓取数据,感兴趣的小伙伴赶紧看下去吧!
7521
2019-08-13 18:56:48
好的数据分析培训机构应该具备哪几点?
好的数据分析培训机构应该具备哪几点?如何选择靠谱的培训机构?简单来说,一看口碑知名度,二看课程内容,三看师资力量,要想选择靠谱的数据分析培训机构,大概就是参照以上三点,然后多试听课程。听上去好像很简单,但其实要挑选到好的数据分析培训机构并不容易,下面是小编的经验之谈。
4937
2019-09-08 15:45:58
做Python网络爬虫需要掌握哪些核心技术?
在当下这个社会,如何有效地提取并利用信息成为一个巨大的挑战。基于这种巨大的市场需求,爬虫技术应运而生,这也是为什么现在爬虫工程师的岗位需求量日益剧增的原因。那么做Python网络爬虫需要掌握哪些核心技术呢?以博学谷推出的《解析Python网络爬虫》课程为例,内容涉及Scrapy框架、分布式爬虫等核心技术,下面我们来一起看一下Python网络爬虫具体的学习内容吧!
7188
2019-12-04 17:38:16
Python在线学习可以吗?靠不靠谱?
因为新冠疫情肆虐,在线学习成为了一种新的学西方式,选择在线学习Python有很多优势。未来互联网和人工智能密不可分,Python编程已逐渐成为工作场所必需的基本技能。学习Python可以提高办公效率增加职场竞争优势。
3708
2021-11-26 11:04:55
JavaScript变量和数据类型有哪几种?
JavaScript变量和数据类型有哪几种?JavaScript 是一种弱类型语言,也就是说不需要指定变量的类型,js中有六种数据类型,包括五种基本数据类型和一种复杂数据类型(object)
3089
2021-12-27 14:10:21