吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4476|回复: 12
收起左侧

[Python 转载] 爬取济南最近30日天气并绘制折线图

[复制链接]
liangyun 发表于 2019-5-7 17:44
本帖最后由 liangyun 于 2019-5-8 13:33 编辑

今天刚开始学折线图,写一个加深一下记忆,代码都是最简单的了,希望能够有大佬指点指点,总觉得还是有些臃肿

a.png
代码如下:

[Python] 纯文本查看 复制代码
import re
import requests
from matplotlib import pyplot as plt


headers = {
    'Host': 'www.yangshitianqi.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0',
}
# 获取济南近30天的最低温和最高温
html = requests.get('https://www.yangshitianqi.com/jinan/30tian.html',
                    headers=headers).text
# 使用正则提取数据
pattern_temperature = r'<div class="fl i3 nz">(\d+~\d+)℃</div>'
pattern_date = r'<div class="t2 nz">(\d\d\.\d\d)</div>'
temperature = re.findall(pattern_temperature, html)
date = re.findall(pattern_date, html)

# 整理数据
max_d = [int(i.split('~')[1]) for i in temperature]
min_d = [int(i.split('~')[0]) for i in temperature]
# 近30日最低温和最高温
max_m = max(max_d)
min_m = min(min_d)
# 近30日最低温最高温所处的日期(第几天)
max_m_d = max_d.index(max_m)
min_m_d = min_d.index(min_m)
# 日期
date = [i.split('.')[0] + '月' + i.split('.')[1] + '日' for i in date]

# 定义图像质量
plt.figure(figsize=(18.5, 9), dpi=180)

# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 绘制图像
plt.plot(range(30), max_d, linestyle=':')
plt.plot(range(30), min_d, linestyle=':')

# 显示日期
plt.xticks(range(30), date, rotation=315)

# xy轴标识
plt.xlabel('日期', size=18)
plt.ylabel('温度/℃', size=18)
plt.title('近30日天气情况', size=36)

# 标记最高温和最低温
plt.text(
    # x轴坐标
    max_m_d,
    # y轴坐标
    max_m + 1,
    # 文字
    f'最高温,{max_m}℃',
    # 字体大小
    fontsize=16,
    # 文字颜色
    color='red',
    # 相对位置-水平
    ha='center',
    # 相对位置-垂直
    va='center',
    # 透明度
    alpha=1
)
plt.text(
    # x轴坐标
    min_m_d,
    # y轴坐标
    min_m - 1,
    # 文字
    f'最低温,{min_m}℃',
    # 字体大小
    fontsize=16,
    # 文字颜色
    color='blue',
    # 相对位置-水平
    ha='center',
    # 相对位置-垂直
    va='center',
    # 透明度
    alpha=1
)

# 显示网格
plt.grid(axis='y', alpha=0.2)
plt.savefig('a.png')
plt.show()

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| liangyun 发表于 2019-5-16 16:54
Neo_0 发表于 2019-5-16 10:51
想了下用excel 链接网站更新下载温度数据再生成折线图也能做到,用python可能更快一些

都差不多吧,Excel更灵活一些,想换个样式秒换,但是启动Excel的时间python可能就把图展现出来了
各有千秋吧,如果只是为了数据,可能使用Excel“‘开发’”要快一些,练手的话还是不要用Excel了,虽然它很强大,但是它不够专业
Neo_0 发表于 2019-5-16 17:44
liangyun 发表于 2019-5-16 17:41
看分析什么了,如果你要统计 晋江文学城作者“宫北夏里”的所有小说中,“我“字出现的次数,Excel是不是 ...

想到李笑来用类似的方法写21天核心词汇了,对这样级别的量python确实更胜任
 楼主| liangyun 发表于 2019-5-7 17:59
打算学大数据分析,也找到了教程,但是还是有些迷茫,毕竟没见过真正的项目,希望有大佬能够指点一下哪儿有具体的项目,或者说怎么样具体应用这个方向
uumesafe 发表于 2019-5-8 12:14
第一行代码应改成:

import re
import requests

免费评分

参与人数 1热心值 +1 收起 理由
liangyun + 1 谢谢@Thanks!

查看全部评分

 楼主| liangyun 发表于 2019-5-8 13:32
uumesafe 发表于 2019-5-8 12:14
第一行代码应改成:

import re
import requests


多谢提醒,马上修正
L__ 发表于 2019-5-8 13:49
可以一起交流
Neo_0 发表于 2019-5-16 10:51
想了下用excel 链接网站更新下载温度数据再生成折线图也能做到,用python可能更快一些
Neo_0 发表于 2019-5-16 17:33
liangyun 发表于 2019-5-16 16:54
都差不多吧,Excel更灵活一些,想换个样式秒换,但是启动Excel的时间python可能就把图展现出来了
各有千 ...

专业?用python量化数据交易么?
 楼主| liangyun 发表于 2019-5-16 17:41
Neo_0 发表于 2019-5-16 17:33
专业?用python量化数据交易么?

看分析什么了,如果你要统计 晋江文学城作者“宫北夏里”的所有小说中,“我“字出现的次数,Excel是不是就有些无能为力了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 08:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表