爬取天气数据并解析温度值
时间:2022-07-24
本文章向大家介绍爬取天气数据并解析温度值,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、概述
获取北京周边城区的天气数据,链接如下:http://www.weather.com.cn/weather1d/101010100.shtml#input
最终需要得到以下数据:
[
{'location': '香河', 'high': '36', 'low': '23°C'},
...
]
二、分析页面
地区
可以发现数据在 id="around"这个div里面,地区的值在a标签中。
那么xpath规则为:
//*[@id="around"]//a[@target="_blank"]/span/text()
效果如下:
温度
温度也是在同一个div里面,温度的值在i标签中
那么xpath规则为:
//*[@id="around"]/div/ul/li/a/i/text()
效果如下:
三、完整代码
import requests
from lxml import etree
url = 'http://www.weather.com.cn/weather1d/101010100.shtml#input'
with requests.get(url) as res:
content = res.content
html = etree.HTML(content)
location = html.xpath('//*[@id="around"]//a[@target="_blank"]/span/text()')
temperature = html.xpath('//*[@id="around"]/div/ul/li/a/i/text()')
data = dict(zip(location, temperature))
# print(data,len(data))
# 数据列表
data_list = []
for i in data:
# 切割
high,low = data[i].split('/')
dic = {'location':i,'high':high,'low':low}
data_list.append(dic)
print(data_list)
执行输出:
[{'location': '香河', 'high': '36', 'low': '23°C'}, {'location': '涿州', 'high': '36', 'low': '25°C'}, {'location': '唐山', 'high': '34', 'low': '24°C'}, {'location': '沧州', 'high': '33', 'low': '26°C'}, {'location': '天津', 'high': '34', 'low': '27°C'}, {'location': '廊坊', 'high': '36', 'low': '24°C'}, {'location': '太原', 'high': '32', 'low': '23°C'}, {'location': '石家庄', 'high': '34', 'low': '26°C'}, {'location': '涿鹿', 'high': '32', 'low': '20°C'}, {'location': '张家口', 'high': '30', 'low': '17°C'}, {'location': '保定', 'high': '36', 'low': '24°C'}, {'location': '三河', 'high': '35', 'low': '23°C'}, {'location': '北京孔庙', 'high': '37', 'low': '23°C'}, {'location': '北京国子监', 'high': '37', 'low': '23°C'}, {'location': '中国地质博物馆', 'high': '37', 'low': '23°C'}, {'location': '月坛公园', 'high': '37', 'low': '22°C'}, {'location': '明城墙遗址公园', 'high': '37', 'low': '23°C'}, {'location': '北京市规划展览馆', 'high': '35', 'low': '24°C'}, {'location': '什刹海', 'high': '37', 'low': '22°C'}, {'location': '南锣鼓巷', 'high': '37', 'low': '23°C'}, {'location': '天坛公园', 'high': '35', 'low': '24°C'}, {'location': '北海公园', 'high': '35', 'low': '24°C'}, {'location': '景山公园', 'high': '35', 'low': '24°C'}, {'location': '北京海洋馆', 'high': '37', 'low': '23°C'}]
注意:这里2个列表转换为一个字典,使用了zip()函数。
本文参考链接:
https://github.com/jackzhenguo/python-small-examples/
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 利用TfidfVectorizer进行中文文本分类(数据集是复旦中文语料)
- 组合模式
- Js中数组空位问题
- 反转字符串
- Prime Path(POJ - 3126)【BFS+筛素数】
- (leetcode每日打卡)秋叶收藏集【动态规划】
- 设计模式~调停者模式(Mediator)
- Sequential Nim(CodeForces - 1382B)【博弈】
- Less Coin Tosses(Gym - 102346L)【打表+找规律】
- leetcode1558题解【贪心】
- 如何将炫酷的报表直接截图发送邮件——在Superset 0.37使用Schedule Email功能
- Kafka监控必备——Kafka-Eagle 2.0.2正式发布
- 安防/教育/互联网直播视频组件EasyRTSPServer读取本地文件报错找不到EasyStreamClient.dll解决方法
- C语言编程入门之--第六章C语言控制语句
- RTSP网络摄像头网页无插件直播视频平台EasyNVR自定义标题和CopyRight步骤