概述
本文参考:
“【技术交流】又论天气——来自百度的天气数据抓取”–贴吧
“Rainmeter 天气”–博客
简单说一下,本文参考了上面两个帖子,采用的方法是直接爬取天气网站的HTML页面文档的方法获取到需要的天气数据,所以基本上是永不失效的。主流天气网页的代码一般不会轻易改变,如果改变了,对应调整本皮肤代码即可。
一、效果
黄色遮住部分为地区显示,我调整了长度,只显示前三个字(如XX市,XX省,中国显示为XX市)。
二、完整代码
[Rainmeter]
Update=1000
[Metadata]
Name=天气爬取
Author=少动症患者
Version=V1.0
License=转载请注明原作者
Description=https://blog.csdn.net/Hugo_1st/article/details/106084414
[Variables];变量
Location=https://tianqi.moji.com/
;-------------------------文档存储--------------------------
[DownloadHTML]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
Url=#Location#
Download=1
DownloadFile=weather.txt
;-------------------------数据处理--------------------------
;气温
[MeasureTemp]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
Url=#Location#
RegExp="(?siU)<div class="wea_weather clearfix">.*<em>(.*)</em>"
StringIndex=1
;图标
[MeasureWeaIco]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
Url=#Location#
RegExp="(?siU)<div class="wea_weather clearfix">.*<img src="(.*)".*>"
StringIndex=1
Download=1
DownloadFile=1.png
;地点
[MeasureAdd]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
Url=#Location#
RegExp="(?siU)<div class="search">.*<em>(.*),.*</em>.*"
StringIndex=1
;更新时间
[MeasureTime]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
Url=#Location#
RegExp="(?siU)<strong class="info_uptime">(.*)</strong>.*"
StringIndex=1
;-------------------------内容显示--------------------------
[BG]
Meter=IMAGE
ImageName=bg2.png
X=0
Y=0
W=60
H=55
[Temp]
Meter=STRING
MeasureName=MeasureTemp
X=21
Y=23
H=15
W=20
StringStyle=NORMAL
FontColor=255,255,255,225
FontSize=10
Fontface=electrofied
Postfix="℃"
StringAlign=CENTER
AntiAlias=1
[WeaIco]
Meter=IMAGE
MeasureName=MeasureWeaIco
X=37
Y=20
W=20
H=20
[Address]
Meter=STRING
MeasureName=MeasureAdd
X=3
Y=5
H=15
W=50
ClipString=1
StringStyle=BOLD
FontColor=255,255,255,225
FontSize=8
Fontface=electrofied
AntiAlias=1
[UpTime]
Meter=STRING
MeasureName=MeasureTime
X=3
Y=50
H=15
W=65
ClipString=1
StringStyle=NORMAL
FontColor=255,255,255,225
FontSize=8
Fontface=electrofied
AntiAlias=1
Hidden=1
三、代码简单解读
[Variables];变量
Location=https://tianqi.moji.com/
–Location为使用的天气网站,本文使用了墨迹天气,正常情况会自动定位你的位置,UpdTime是我给后面的每个部分的更新率的统一设置,可能与Update=1000有重复,在本次1.0版中已删去。
–文档存储部分是把网页HTML文档以txt格式存储到本地,文件名为weather.txt,通过这个文档来查找你要爬取的数据位置,便于开发和修改皮肤,也可以直接浏览器查看页面代码来查找数据位置,所以这一段可以去掉。
;气温
[MeasureTemp]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
Url=#Location#
RegExp="(?siU)<div class="wea_weather clearfix">.*<em>(.*)</em>"
UpdateRate=#UpdTime#
StringIndex=1
–数据处理部分是使用WebParser.dll来获取网页文档中特定位置的内容,内容的定位在RegExp
中。这部分的语法我也不是很熟,表达式以(?siU)
开头,然后是我定位当前温度的标签位置为<div class="wea_weather clearfix">
,后面的.*
是省略中间内容的意思,然后我们要的温度是在<em></em>
之间,所以在这个地方用(.*)
,再加StringIndex=1
,就是温度的数据了。这里的StringIndex=1
是在RegExp
表达式中爬取的字段的索引。如果在RegExp
表达式中有两个或多个(.*)
,那么第二个爬取的内容的索引就是StringIndex=2
,以此类推。然后你再看图标的爬取就明白了。
;图标
[MeasureWeaIco]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
Url=#Location#
RegExp="(?siU)<div class="wea_weather clearfix">.*<img src="(.*)".*>"
UpdateRate=#UpdTime#
StringIndex=1
Download=1
DownloadFile=1.png
图标代码中RegExp="(?siU)<div class="wea_weather clearfix">.*<img src="(.*)".*>"
,(.*)
的位置就是源网页HTML文档中天气图标的地址。将该图标下载到本地,存储为1.png
,在后面的显示中将这个图标显示出来即可。地点和更新时间的爬取也一样。
–内容显示部分就没什么好说的了,只是这个Fontface=electrofied
是字体,没有这个字体的朋友换成其它就好,比如Fontface=微软雅黑
。还有就是更新时间默认是隐藏,因为这个皮肤本来就是希望简洁一点,所以背景图片调的也比较小,如果想要显示更新时间,将Hidden=1
改为Hidden=0
即可。
最后,皮肤还没上传,想要的朋友可以将上面第二部分的完整代码复制后,粘贴到自己创建的txt文档,然后重命名为weather.ini
文件(注意改文件扩展名),然后和下面这个背景图放到同一个文件夹下,再将整个文件夹放到雨滴皮肤的Skins
文件夹下就可以应用了。
背景图片(命名为bg2.png,与weather.ini
放在同一文件夹下):
用这个方法可以修复卷角天气,效果如下:
**
后续做了一个2.0版(在线数据版)和3.0版(离线数据版),效果是一样的,只是离线版是先把数据下载下来,通过解析本地文件显示,适合偶尔没网的情况,在线数据版是直接获取页面数据显示。与1.0类似,样式做了调整,效果如下:
**
2.0版本取消了背景,只需要ini文件,应用即可,3.0离线版需要下载离线图标。
2.0版本已上传,下载地址:https://download.csdn.net/download/Hugo_1st/12505890
最新5.5版发布:[https://blog.csdn.net/Hugo_1st/article/details/108564723]
最新发布两款自己写的DOCK,需要可隐藏的侧边应用栏或者底部应用栏的小伙伴可以看看:https://blog.csdn.net/Hugo_1st/article/details/107992449
喜欢的朋友点个赞吧,有什么问题欢迎交流
–少动症患者
最后
以上就是温婉仙人掌为你收集整理的【雨滴桌面】简洁的桌面天气,可以说是永不失效的天气数据获取方法的全部内容,希望文章能够帮你解决【雨滴桌面】简洁的桌面天气,可以说是永不失效的天气数据获取方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复