Perl结合飞信发送免费的天气预报信息

简介:

每天在公司上班,打开QQ的同时,就顺便看了一下今天的天气情况。当时就在想,可不可以用perl来解析这个html页面,抽取其中必要的elements,然后透过第三方的飞信将该消息发送给自己,不就可以了么。说干就干,就写了这么一段代码,算法不是特别好,参考了某位网友的处理方法,但又有区别。

获取天气预报的页面地址,我用了这个address

 
  1. http://qq.ip138.com/weather/zhejiang/HangZhou.htm 

完整的code如下:(调试了一天,妈妈的)

 
  1. #!/usr/bin/perl -w 
  2.  
  3. use strict;
  4. #utf8一定要加,否则出现乱码
  5. use utf8; 
  6. use LWP::Simple; 
  7. use 5.010;
  8.  
  9. my $url = shift || "http://qq.ip138.com/weather/zhejiang/HangZhou.htm"; 
  10. my $content = get $url; 
  11. my @url = split /\n/,$content; 
  12. my $path = "/root/lib"
  13. my $fetion = "/root/lib/fetion"
  14.  
  15. &get_weather(\@url); 
  16. system(qq{LD_LIBRARY_PATH=$path $fetion --mobile=12345678901 --pwd='123456' --to=123456 --exit-on-verifycode=1 --file-utf8=/root/weather.txt --msg-type=1}); 
  17.  
  18. sub get_weather($) { 
  19.     my ( $weather ) = @_; 
  20.     my ( $count,$i ) = ( 0,0 ); 
  21.  
  22.     while ( $i < scalar(@$weather) ) { 
  23.  
  24.            next unless @$weather[$i++] =~ /日期/; 
  25.            $i += 1; 
  26.  
  27.            open my $file,'>>','/root/weather.txt' or die "$!\n"; 
  28.            if ( -s '/root/weather.txt' > 0 ) { 
  29.                system("cat /dev/null >/root/weather.txt"); 
  30.            } 
  31.  
  32.            while ( $count < 1 ) { 
  33.                   @$weather[$i++] =~ /(?:.*)\>(?<name1>.*?)\<\/td\>/; 
  34.                   $count ++; 
  35.                   say $file "$+{name1}\t"; 
  36.            } 
  37.  
  38.            say $file "\n"; 
  39.            $i += 9; 
  40. $count = 0
  41.            while ( $count < 1 ) { 
  42.                   @$weather[$i++] =~ /.*\>(?<name2>.*)\<\/td\>/; 
  43.                   $count ++; 
  44.                   say $file "$+{name2}\t"; 
  45.            } 
  46.  
  47.           say $file "\n"; 
  48.            $i += 9; 
  49.            $count = 0
  50.            while ( $count < 1 ) { 
  51.                   @$weather[$i++] =~ /(?:.*)\>(?<name3>.*?)\<\/td\>/; 
  52.                   $count ++; 
  53.                   say $file "$+{name3}\t"; 
  54.            } 
  55.  
  56.     close $file; 
  57.     last; 
  58.  
  59.     } 

此支perl程序,仅仅抽取了天气预报详情页面的这几个值:

1) 日期

2) 实际天气情况

3)当天的气温

其他的就没有弄了,情况类似。

附:linux下配置飞信的方法

下载机器人支持库

 
  1. http://www.it-adv.net/fetion/linuxso_20101113.rar

注:我的系统是64位的,但是如果下载了64位的版本,ms有问题,32位的就OK

另外,linux用户,请不要把支持库中的 lib* 复制到 /usr/lib 下,因为发行版本不同,可能会覆盖您机器中的核心库,导致严重系统问题。您可以把库解压到主程序的相同目录,然后以 LD_LIBRARY_PATH=. ./fetion 来运行)

详细介绍见这个页面

 
  1. http://bbs.it-adv.net/viewthread.php?tid=1081&extra=page%3D1

本文转自dongfang_09859 51CTO博客,原文链接:http://blog.51cto.com/hellosa/620743,如需转载请自行联系原作者
相关文章
|
20小时前
|
云安全 人工智能 自然语言处理
|
5天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
310 116
|
8天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
550 51
Meta SAM3开源:让图像分割,听懂你的话
|
20天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
4天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
|
3天前
|
弹性计算 人工智能 Cloud Native
阿里云无门槛和有门槛优惠券解析:学生券,满减券,补贴券等优惠券领取与使用介绍
为了回馈用户与助力更多用户节省上云成本,阿里云会经常推出各种优惠券相关的活动,包括无门槛优惠券和有门槛优惠券。本文将详细介绍阿里云无门槛优惠券的领取与使用方式,同时也会概述几种常见的有门槛优惠券,帮助用户更好地利用这些优惠,降低云服务的成本。
263 132
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
AgentEvolver:让智能体系统学会「自我进化」
AgentEvolver 是一个自进化智能体系统,通过自我任务生成、经验导航与反思归因三大机制,推动AI从“被动执行”迈向“主动学习”。它显著提升强化学习效率,在更少参数下实现更强性能,助力智能体持续自我迭代。开源地址:https://github.com/modelscope/AgentEvolver
386 29
|
14天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
704 224