使用perl剥离除html标记之外的所有内容
发布时间:2020-12-15 23:36:38 所属栏目:大数据 来源:网络整理
导读:我一直在寻找一种方法来从html文档中删除所有内容,只留下html标记.有人知道这个方法吗?我有很多perl模块的经验,并且已经彻底搜索过这个网站. 我想将html作为字符串传递给我的perl脚本并删除除标签之外的所有内容.这是一个例子: 传入: !doctype htmlhtmlhe
我一直在寻找一种方法来从html文档中删除所有内容,只留下html标记.有人知道这个方法吗?我有很多perl模块的经验,并且已经彻底搜索过这个网站.
我想将html作为字符串传递给我的perl脚本并删除除标签之外的所有内容.这是一个例子: 传入: <!doctype html> <html> <head> <title>Example Domain</title> <meta charset="utf-8" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <style type="text/css"> body { background-color: #f0f0f2; margin: 0; padding: 0; font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; } div { width: 600px; margin: 5em auto; padding: 50px; background-color: #fff; border-radius: 1em; } a:link,a:visited { color: #38488f; text-decoration: none; } @media (max-width: 700px) { body { background-color: #fff; } div { width: auto; margin: 0 auto; border-radius: 0; padding: 1em; } } </style> </head> <body> <div> website content .... </div> </body> </html> 变为: <html><head><title></title><meta><meta><meta><style></style></head><body><div><h1></h1> <p></p><p><a></a></p></div></body></html> 解决方法#!/usr/bin/perl -- use strict; use warnings; use XML::Twig; Main( @ARGV ); exit( 0 ); sub Main { if( @_ ){ nothing_but_tags("$_") for @_; } else { nothing_but_tags(q{<NoTe KunG="FoO" ChOp="SuEy"> NoteKungFo0Ch0pSuEy <To KunG="FoO">ToKungFo0 <Person KunG="FoO">Satan</Person> </To> <Beef KunG="FoO"> BeefKunGFoO <SaUsAGe KunG="FoO">is Tasty </SaUsAGe> </Beef> </NoTe>},); } } sub nothing_but_tags { my( $input,%opt ) = @_; $opt{pretty_print} ||= 'indented' ; my $t = XML::Twig->new( %opt,force_end_tag_handlers_usage => 1,start_tag_handlers => { _all_ => sub { if( $_->has_atts ){ $_->set_atts ({}); } return; },},end_tag_handlers => { _all_ => sub { $_->flush; return },char_handler => sub { '' },); $t->xparse( $_[0] ); $t->flush(); (); } __END__ <NoTe> <To> <Person></Person> </To> <Beef> <SaUsAGe></SaUsAGe> </Beef> </NoTe> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |