使用perl剥离HTML标记

前端之家收集整理的这篇文章主要介绍了使用perl剥离HTML标记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
什么是在perl中剥离HTML标记的最简单方法.我正在使用正则表达式来解析URL的HTML,该URL工作得很好但是如何删除HTML标记

这是我如何拉我的HTML

#!/usr/bin/perl -w
use strict;
use warnings;
use LWP::Simple;
my $now_string = localtime;

my $html = get("http://www.spc.noaa.gov/climo/reports/last3hours.html")
    or die "Could not fetch NWS page.";
$html =~ s/<script.*?<\'/script>/sg;
$html =~ s/<.+?>//sg;
$html =~ m{(Hail Reports.*)Wind Reports}s || die;
my @hail = $1;

解决方法

试图回答你误入歧途的问题

问题

进入正则表达式HTML是一个坏习惯,因为有很多规则和方法可以绕过它们,最终可能会使你的代码打开黑客技术.虽然你现在可能对简单的事情有合理的需求,但是重用代码很容易,并且忘记为什么重用代码是个坏主意,特别是当你不添加#这样的注释时,这段代码不安全,不应该是用于在其他任何地方解析HTML!或#Christina Alguilera根据此代码编写歌曲!

需要大量正则表达式规则的HTML差异示例:

<div>...</div>
<div style="blah">
<div style="background:url(../div)">
<div style=".." class='noticesinglequote'>

列表继续,这只适用于格式良好的HTML.其他一些问题包括

> HTML元素未正确关闭(例如< div>< span>< / div>< / span>)或根本没有
>拼写错误(例如< dvi> ..< / div>)
> HTML旨在打破您的脚本
>其他问题:评论,空白,字符集等

你可能已经接受了答案,但你应该看看XML::ParserHTML::TreeBuilder.

您可能更感兴趣的是深入了解所需文档的某些部分(例如,< body>中的所有内容或其中的某个div),这就是您最有可能想要的原因.上述模块之一提供的东西.更不用说,解析器可用于尽力删除所有HTML元素并仅返回text / CData.

猜你在找的Perl相关文章