新人报到,顺便问个关于清理html部分标签的方法



QUOTE:
原帖由 ynchnluiti 于 2009-1-4 10:45 发表

合并完了,没有特殊标记不好分行。

恩 的确是这样的 现在正在考虑其他方法实现。

比如说,仍然是逐行读入文件。然后对读入数据进行匹配。


QUOTE:
原帖由 zhuyubei 于 2009-1-4 12:46 发表
#!/usr/bin/perl
  2 open IN, "perltest";
  5 select OUT;
  6 foreach $line (@content)
  7 {
  8         unless($line =~ /head|title/)
  9         {
10                 $line =~ s/$line//g ...

谢谢朋友的代码。

不过有一个问题,html的Source 除了这个head部之外,还有body部的。

这样删除了的话,body部分的内容也被一并删除掉了。现在只想对Head进行整理,对于Body部分保持原样就可以了。

不知道怎样实现好些呢?
到底是什么意思?我html语言不熟悉,给个例子看看


QUOTE:
原帖由 zhuyubei 于 2009-1-4 14:51 发表
到底是什么意思?我html语言不熟悉,给个例子看看

html的Source像下面这样的。

<html>

<head>
A
A
A
A
<title>I love Perl</title>
A
A
A
A
</head>

<body>
B
B
B
B
B
B
B
B
B
</body>

</html>


A B都是一些具体的代码。
我现在想要删除的是A这些的代码。

整理完毕就是下面这个样子的
<html>
<head>
<title>I love Perl</title>
</head>

<body>
B
B
B
B
B
B
B
B
B
</body>

</html>


现在想到的办法都是读成一行,这样输出的代码也就是一行了,不方便看,不知道能不能保留原来的结构,只删除A的内容。


[Copy to clipboard] [ - ]
CODE:
perl -e '$html = do { local $/;<> };$html =~s{(<head>|</title>).*?(<title>|</head>)}{$1$2}sg;print $html' html

用 HTML::Strip  来作,这个的速度要是普通正则的十倍速度,经过我的很大量的测试结果。
另外 正则比HTML::TreeBuilder 也快很多。 因为TreeBuilder 用了很慢的HTML:arser, 不过要是不进行大量处理的话 用Parser要好些。


QUOTE:
原帖由 xunxin 于 2009-1-12 17:36 发表
用 HTML::Strip  来作,这个的速度要是普通正则的十倍速度,经过我的很大量的测试结果。
另外 正则比HTML::TreeBuilder 也快很多。 因为TreeBuilder 用了很慢的HTML:arser, 不过要是不进行大量处理的话 用Pa ...

有十倍那么多啊