You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Perl脚本抓取ogimet网页高空观测数据的文本内容

可以使用Perl脚本自动获取该页面的文本内容,以下是可直接运行的实现方案:

依赖安装

首先安装需要的第三方Perl模块,执行以下命令:

cpanm LWP::UserAgent HTML::Strip

如果需要直接提取页面中的表格结构化数据,可以额外安装HTML::TableExtract模块。

完整实现脚本

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTML::Strip;

# 配置请求参数,可根据需求修改
my $site_id = '63741'; # 站点编号
my $start_year = '2021';
my $start_month = '09';
my $start_day = '02';
my $start_hour = '19';
my $end_year = '2021';
my $end_month = '09';
my $end_day = '03';
my $end_hour = '19';
my $output_file = 'sounding_data.txt'; # 输出文件路径

# 构造请求URL
my $url = "https://www.ogimet.com/display_sond.php?lang=en&lugar=$site_id&tipo=ALL&ord=DIR&nil=SI&fmt=html&ano=$start_year&mes=$start_month&day=$start_day&hora=$start_hour&anof=$end_year&mesf=$end_month&dayf=$end_day&horaf=$end_hour&send=send";

# 初始化请求客户端
my $ua = LWP::UserAgent->new;
$ua->timeout(30);
# 模拟浏览器UA避免被网站拦截
$ua->agent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');

# 发送请求
my $response = $ua->get($url);
unless ($response->is_success) {
    die "请求失败: " . $response->status_line;
}

# 去除HTML标签,提取纯文本
my $hs = HTML::Strip->new();
my $raw_text = $hs->parse( $response->content );
$hs->eof;

# 写入本地文件
open my $fh, '>:encoding(utf8)', $output_file or die "无法打开输出文件: $!";
print $fh $raw_text;
close $fh;

print "数据已成功保存到 $output_file\n";

优化建议

  • 可以将请求URL中的fmt=html参数改为fmt=csv,直接获取CSV格式的结构化数据,无需额外解析HTML标签,数据处理更方便
  • 批量请求时建议添加10-30秒的间隔,避免请求频率过高触发网站的反爬限制
  • 可以扩展脚本逻辑,批量遍历多个站点号、多个时间段,实现批量自动下载

内容的提问来源于stack exchange,提问作者Zilore Mumba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:09:00