查看: 3543|回复: 1

[交流讨论] 利用网页转文本获取五天的天气预测范例(娱乐用)

[复制链接]
梦石
0
星屑
14720
在线时间
2175 小时
注册时间
2016-9-20
回帖
777
发表于 2021-3-3 21:16:01 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 ppspssss 于 2025-4-19 20:39 编辑

https://rpg.blue/thread-484811-1-1.html  原貼地址 @alexncf125 研究了好久 #1 <由此人士想获取本地天气(自动检测地区)并提供了api (主要是靠该api,有更好的获取天气网方法如韩小韩获取天气api https://api.vvhan.com/)

这个找了菜鸟教程里的https://www.runoob.com/regexp/regexp-syntax.html  才学到
我也不知获取天气有什么用 , 本来有可以实时温度和 风向 湿度之类的, 太麻烦弄个简略就算

*2025/4/10
目前该网页API还能用, “查看天气详情"> 变成了 "点击查看"> , 近六天天气也变成了 六天天气 因而第一个匹配会变成"nil" , 但代码方面我没改,需要试就请用原来的附件内自带的txt文本
追加注释
”bababa... “是代词代指省略号

[pre lang="ruby"]module BBwin
    $time=0
def self.获取指定网页源代码 #
#a = url_data("https://price.btcfans.com/") #网页例子
a = url_data("http://i.tianqi.com/index.php?c=code&id=64")
f = File.open("网页源代码.txt","w+")
#f = File.open("网页源代码.txt","w+") #a+意思:讀取,写入,覆盖原文件,文件不存在自动创建
#$a = $a#.to_s
f.write(a) #VX ACE版本要变成变量才行不能单独使用
f.close

      
end #def


def self.获取近五天的天气 #
#f = File.open("网页源代码.txt","w+")
@第几天 = 0
@第几天文字 = ""
@周几 = ""
$subject=[]
$subject = File.readlines("网页源代码.txt")#$subject等于行里所有行数
#p $subject.size
  for i in 0...$subject.size  #遍历所有行数
$subject.chomp! #!發生變化并返回
#$subject =~ /比特币价格<(\d+)/i #错误示范
#p $subject
$subject =~ /<div class="date">/#匹配文本中的data-usd="后的数字
if $~ !=nil
#p $~[1]#匹配全部匹配到的的一个变量为$1
#p $subject
end #if

if $subject.include?("周一")
@周几 = "周一"
elsif $subject.include?("周二")
@周几 = "周二"  
elsif $subject.include?("周三")
@周几 = "周三"
elsif $subject.include?("周四")
  @周几 = "周四"
elsif $subject.include?("周五")  
@周几 = "周五"
elsif $subject.include?("周六")
  @周几 = "周六"
elsif $subject.include?("周日")  
@周几 = "周日"
  end #if
   
$subject =~ /近6天天气预报/
   if $~ !=nil
   a = $subject
   b = a.sub!(/  .*?">/, "")  #1 #分别删除前的 bababa...查看天气详情">
c = b.sub!(/<.*?\/a>/, "")  #1  #删除后的 <bababa.../a> #这里是匹配天气预报不是第几天
c1 = c
  # p c
   
   end #if
  

$subject =~ /<p class="degrees">/
if $~ !=nil
   #第几天
   if @第几天 == 0
   @第几天文字 = "第一天(今天)"
   elsif @第几天 == 1
   @第几天文字 = "第二天(明天)"
   elsif @第几天 == 2
   @第几天文字 = "第三天"
   elsif @第几天 == 3
    @第几天文字 = "第四天"
   elsif @第几天 == 4
    @第几天文字 = "第五天"
   elsif @第几天 == 5
    @第几天文字 = "第六天"
     
   end #if
     @第几天 += 1
   a = $subject
   
   #b = a.sub!(/">.*$/, "")
   #b = a.sub!(/">.*?<s/, "")
# b = a.sub!(/">.*?<s/, "")
b = a.sub!(/  .*?">/, "")  #分别删除前的 bababa...点击查看">
c = b.sub!(/<sup>.*?<\/p>/, "")  #删除后的 <bababa.../p>
c2 = c
#p c

end #if

$subject =~ /<p class="climate">/
if $~ !=nil
   a = $subject
   

b = a.sub!(/  .*?">/, "")  #分别删除前的 bababa...climate"
c = b.sub!(/<.*?\/p>/, "")  #删除后的 <bababa.../p>
#p c
c3 = c

p c1,@第几天文字,c2,c3
end #if


end #for i




end #def

end #module[/pre]
DQ1[8AWQ5H)9JQVH}%XU9%Y.png
获取本地五天的天气.rar (1.43 MB, 下载次数: 46)
问NPC请 要先点 获取指定网页源代码 再  获取近五天的天气 ,
近6天天气那个无视, 实际就五天,
忘了显示周几那个了, 仅供参考, 不会使用的请勿使用
##此前為2021.3.3号編緝
@有丘直方 发现此人想过有关天气设想, 我想这贴可能符合该楼主之设想, 召唤一下, (发现他5月20日最后登录不知还在不在)
https://rpg.blue/thread-402415-1-1.html

评分

参与人数 2赞 +2 收起 理由
有丘直方 + 1 精品文章
alexncf125 + 1 精品文章

查看全部评分

贴子只供参考我贴子内容有很多只是我自己标识的内容代指不是原来意思,偏向发贴当时的想法(后来回看贴发现有很多错误,会造成误导 ),如果想靠谱点应 找相关正确的文章   -- 2025/4/19
梦石
0
星屑
1944
在线时间
404 小时
注册时间
2015-8-30
回帖
322
发表于 2021-7-25 17:11:49 | 显示全部楼层
我当时想获取天气是为了能在命令行查天气预报,那样更方便(不过好像这样的工具 Google 上能搜到
小仙女一枚~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部