前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬取天气数据并解析温度值

爬取天气数据并解析温度值

作者头像
py3study
发布2020-08-27 16:51:43
1.1K0
发布2020-08-27 16:51:43
举报
文章被收录于专栏:python3python3

一、概述

获取北京周边城区的天气数据,链接如下:http://www.weather.com.cn/weather1d/101010100.shtml#input

1.png
1.png

最终需要得到以下数据:

代码语言:javascript
复制
[
  {'location': '香河', 'high': '36', 'low': '23°C'},
  ...
]

二、分析页面

地区

可以发现数据在 id="around"这个div里面,地区的值在a标签中。

1.png
1.png

那么xpath规则为:

代码语言:javascript
复制
//*[@id="around"]//a[@target="_blank"]/span/text()

效果如下:

1.png
1.png

温度

温度也是在同一个div里面,温度的值在i标签中

1.png
1.png

那么xpath规则为:

代码语言:javascript
复制
//*[@id="around"]/div/ul/li/a/i/text()

效果如下:

1.png
1.png

三、完整代码

代码语言:javascript
复制
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)

执行输出:

代码语言:javascript
复制
[{'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/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、分析页面
    • 地区
      • 温度
      • 三、完整代码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档