网页格式化排版代码,专用信息采集后的内容整理

        public static string ClearHtml(string content) {
            Regex regex = new Regex("");
            //首先把p标签的属性去掉,只留<p>
            regex = new Regex(@"<p.*?>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
            content = regex.Replace(content, "<p>");

            //找到网页中的各种标签,留待后续处理
            regex = new Regex(@"<[/]*(?<txt>.*?)[\s>]", RegexOptions.Singleline | RegexOptions.IgnoreCase);
            List<string> labels = new List<string>();
            MatchCollection mclabels = regex.Matches(content);
            foreach (Match m in mclabels) {
                if(labels.Contains(m.Groups["txt"].Value) == false)
                    labels.Add(m.Groups["txt"].Value.ToLower());
            }
            //对各种标签进行替换,p、img、strong除外。br后面会进行单独处理
            foreach (string lable in labels) {
                if (lable=="p" || lable == "img" || lable=="strong" || lable=="br")
                    continue;
                regex = new Regex(@"<[\/]*" + lable + ".*?>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
                content = regex.Replace(content, "");
            }
            MatchCollection mc = null;

            regex = new Regex(@"<img.*?src\s*?=\s*?[‘""](?<txt>.*?)[‘""].*?>", RegexOptions.Singleline | RegexOptions.IgnoreCase);
            mc = regex.Matches(content);
            foreach (Match m in mc) {
                content = content.Replace(m.Value,"<img src=‘"+ m.Groups["txt"].Value+"‘ />");
            }

            Regex r = new Regex(@"<br.*?>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
            content = r.Replace(content, "\r\n");
            r = new Regex(@"[\r\n\t]", RegexOptions.IgnoreCase | RegexOptions.Singleline);
            content = r.Replace(content, "</p><p>");
            content = content.Trim();
            if (content.StartsWith("</p>") == true)
                content = content.Substring(4);
            if (content.EndsWith("<p>") == true)
                content = content.Remove(content.Length - 3);

            //替换段前空格开始
            regex = new Regex(@"<p>\s*&nbsp;", RegexOptions.IgnoreCase | RegexOptions.Singleline);
            while (regex.IsMatch(content))
            {
                content = regex.Replace(content, @"<p>");
            }
            regex = new Regex(@"<p>\s+", RegexOptions.IgnoreCase | RegexOptions.Singleline);
            while (regex.IsMatch(content))
            {
                content = regex.Replace(content, @"<p>");
            }
            regex = new Regex(@"<p> +", RegexOptions.IgnoreCase | RegexOptions.Singleline);
            while (regex.IsMatch(content))
            {
                content = regex.Replace(content, @"<p>");
            }
            //替换段前空格结束

            //替换p标签空嵌套的情况
            regex = new Regex(@"<p>\s*?<p>", RegexOptions.Singleline | RegexOptions.IgnoreCase);
            while (regex.IsMatch(content))
                content = regex.Replace(content, "<p>");
            regex = new Regex(@"<\/p>\s*?<\/p>", RegexOptions.Singleline | RegexOptions.IgnoreCase);
            while (regex.IsMatch(content))
                content = regex.Replace(content, @"</p>");

            //替换p标签内容为空的情况
            regex = new Regex(@"<p>(?<txt>.*?)</p>", RegexOptions.Singleline | RegexOptions.IgnoreCase);
            mc = regex.Matches(content);
            foreach (Match m in mc) {
                string value = m.Groups["txt"].Value;
                value = value.Replace("&nbsp;", "").Trim();
                if (string.IsNullOrEmpty(value) == true)
                    content = content.Replace(m.Value,"");
            }

            //段首加空格
            content = content.Replace("<p>", "<p>  ");

            return content;
        }

剔除了除p、img、strong之外的其他标签,对p、img的各种属性也进行了清除,专门用于生成干净的网页正文,可用于信息采集后的内容整理和格式化排版。自用代码,算法效率可能不高,但是足以满足目前需求了。

时间: 2024-10-13 10:25:32

网页格式化排版代码,专用信息采集后的内容整理的相关文章

Sublime text 3 如何格式化HTML代码

使用Sublime text 3 编写代码是一种享受,使用Sublime text 3 格式化HTML代码,需要安装插件,具体安装步骤如下: 1.Ctrl+Shift+p,输入 Package Control:Install Package . 2.等待程序进入插件管理功能,再输入插件名称:TAG. 3.点击安装插件. 4.插件安装成功后,在需要格式化的HTML代码中,选中代码,然后按Ctrl+Alt+F对代码进行格式化. 5.最后再将格式的代码通过Tab来进行排版.

【转】vim格式化C代码

转自:http://blog.chinaunix.net/uid-24774106-id-3396220.html 在自己的目录下编辑自己的.vimrc, vim ~/.vimrc添加下面的几行: : filetype indent on set et set ci set shiftwidth=4 autocmd FileType make setlocal noexpandtab    解释下含义, set ci 表示采用类似c 语言的缩进风格. 与自动缩进相关的变量表 变量名 缩写 含义

Dreamweaver如何格式化html代码【转载】

草考文献:Dreamweaver如何格式化html代码 我们在使用Dreamweaver进行网页制作时,通过编辑其设置中的代码格式,可以一键实现代码格式化,从而让代码格式统一,提高代码可读性. 工具/原料 Dreamweaver CS6 方法/步骤 用Dreamweaver打开现有html文档时,可能会出现如图所示的没有任何缩进的代码,可读性很差   为了格式化代码,我们可以先设置一下自己想要的代码格式. 依次点击 编辑 -> 首选参数: 英文版则是 Edit -> Preferences  

格式化JavaScript代码

javascript代码格式化工具 网上下载的js代码经常遇到代码已被压缩(注释.换行.缩进.空格.TAB等都被删除了),如果拿来学习.研究的话必定看到头晕.有些编辑器的“格 式化代码”功能可以解决这个问题,在网上搜索了一下,找到一些这样的工具,其中用sourceformatx 很不错,支持很多语言,不过要收费,未注册的不能格式化大于8k的代码.注册费188元,太贵了:TextRush虽说免费,但好像根本没有发布: polystyle似乎不错:vs.net的插件ReSharper也有这样的功能,

使用meta实现网页跳转代码实例

使用meta实现网页跳转代码实例: 实现网页的跳转功能可以使用就javascript,如果不追求良好的展现效果的话,比如倒计时之类的,使用meta标签也可以实现此功能,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.51texiao.cn/"

CSS格式化 CSS代码压缩工具

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn"> <head> <met

网页背景图片代码

1.(最普遍类) <style>body{background-image:url(logo.gif);background-repeat:no-repeat;background-position:center}</style> 说明:以上代码为网页背景图片固定代码!网页背景图片固定代码,这样,当向下拉网页时,网页背景图片不会跟着向上移动,达到不动的目的! 2.(综合类) 3.<P class="style6"> </P></SP

四种ASP网页跳转代码

时间:2012-06-12 21:12来源:未知 输入:铜都风尘 点击: 32987 次 如果你要在服务器端跳转,可以这样: Response.Redirect(http://blog.163.com/power_1/) Response.End 如果你要在客户端跳转,可以这样: script language=java 如果你要在服务器端跳转,可以这样建立一个asp文件:<%Response.Redirect("http://54qq.net/qq/")Response.End

eclipse格式化自定义代码样式风格

shift+ctrl+f是格式化当前代码样式 格式化整个项目,右健--soruce-formatter 若要设置class,method中的第一个"{",在类名,方法名的同一行,要以在: windows->prrferences->java->code style->formatter->edit->braces中,全部设置为sameline.若要在新  一行显示,则设置为next line. 设置『Formatter』:Eclipse内置的模板不能