gpt4 book ai didi

html - 使用 perl 去除 HTML 标签

转载 作者:太空狗 更新时间:2023-10-29 15:22:17 30 4
gpt4 key购买 nike

在 perl 中去除 HTML 标签的最简单方法是什么。我正在使用正则表达式从 URL 解析 HTML,效果很好,但我如何去除 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 中使用正则表达式是一个坏习惯,因为有太多的规则和绕过它们的方法,最终可能会使您的代码暴露给黑客技术。虽然您现在可能对一些简单的东西有合理的需求,但重用代码很容易忘记为什么重用它是个坏主意,尤其是当您不添加像 # This code is NOT secure and should not be used to parse HTML anywhere else!!! 这样的注释时。或 # Christina Alguilera writes songs based on this code!!!

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

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

这个列表还在继续,但仅适用于格式良好的 HTML。其他一些问题示例包括:

  1. HTML 元素未正确关闭(例如 <div><span></div></span>)或根本没有关闭
  2. 拼写错误(例如 <dvi>..</div>)
  3. 旨在破坏您的脚本的 HTML 设计
  4. 其他问题:注释、空格、字符集等

解决方案


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

与其剥离 HTML 文档的某些部分,您可能更感兴趣的是向下钻取您想要的文档部分(例如 <body> 中的所有内容或其中的某个 div),这就是为什么您很可能想要上述模块之一提供的东西。更不用说,解析器可用于尽最大努力删除所有 HTML 元素并仅返回文本/CData。

关于html - 使用 perl 去除 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3176842/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com