- 论坛徽章:
- 0
|
看很多人中文显示不正常或用其他模块解析不正常,改了一个直接用正则提取天气信息的,供大家参考:
(XP,ActivePerl 5.10.1007运行正常,中文亦正常)- #!/usr/bin/perl
- use strict;
- use warnings;
- use Encode;
- use LWP::Simple;
- my $html=get("http://www.weather.com.cn/html/weather/101250101.shtml");
- my @div = ($html =~ /<div class="weatherYubao.*?>(.*?)<\/div>/isg);
- my $data = encode("gbk",join('',@div));
- $data =~ s/\n|\r//g;
- my ($title) = ($data =~ /<h1 class="weatheH1">(.*?)<span>/i);
- $title =~ s# |\s+# #ig;
- print "\n$title\n\n";
- my @forcast_table = ($data =~ /(<table.*?>.*?<\/table>)/ig);
- foreach (@forcast_table) {
- if (/class="yuBaoTable"/i) {
- s/<.*?>//g;
- s/\s+/\t/g;
- s/^\t/ ++ /;
- s/\t白天/\n 白天/;
- s/\t夜间/\n 夜间/;
- print "$_\n\n";
- }
- }
- print "\7";
- <STDIN>;
复制代码 |
|