【发布时间】:2019-05-09 18:50:54
【问题描述】:
我正在尝试编写一个类似于电视指南的 Perl 脚本,它显示当前正在播放的某些频道的节目,例如 Fox(7.1 WSVNH) 和 ABC(10.1 WPLGH)。
我尝试实现的输出如下所示:
7.1 - Hell's Kitchen
10.1 - 20/20
... and so on
(频道号和当前节目名称)
这是我试图从中提取 HTML 的网站: https://nocable.org/tv-listings/2f46-miami-fl
这是我用来执行脚本的命令:
wget -O - website | ./script.pl
这是我正在处理的一些代码(注意:我正在尝试坚持在 Perl 中使用正则表达式进行模式匹配,因为我还在学习 Perl):
#!/usr/bin/perl
while ( <> ) {
@htmlstring = m/wplgh(.*?)br/i
}
print @htmlstring;
我能够提取 html 块,但不是我想要的。我正在尝试提取节目标题。此外,我一直认为最好在从 html 中提取后将节目标题存储在哈希中。
%channel;
$channel{'7.1'} = $showtitle;
$channel{'10.1'} = $showtitle;
【问题讨论】:
-
这是一个很大的 HTML 页面,因此使用正则表达式可能不是好方法...您应该考虑使用真正的 HTML 解析器
-
用正则表达式解析 HTML 充其量只是运气。正则表达式并不是真正适合这项工作的工具。检查类似于 HTML::TokenParser 的内容。还可以使用 LWP::Simple 消除 wget 并将数据直接拉入您的脚本