• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

怎样将html过滤成txt,就象IE浏览器可以将页面另存为txt文件一样?

shyworm 2003-06-20 02:13:52
我用WebClient.DownloadData之后,想过滤成纯文本(不含Html格式信息),请大家多帮忙。
...全文
140 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shyworm 2003-06-23
感谢各位高人的帮助,问题解决了!
回复
cdshelf 2003-06-21
最好把 <BR> <HR> <TR> <P> <DIV> 转换成换行符,这样可以保留原来的断行,出来的文本才可读。
回复
nean 2003-06-21
留个记号,up一下,呵呵
回复
redflute 2003-06-21
如果你的系统没有日文输入法,可能会看到一些乱码,但是没关系啦,全是注释嘛!
回复
redflute 2003-06-21
我正好昨天碰到一个这样的程序webget.cs,你自己 编译一下就可以用了.
不过注释是日文的,我尽量给你翻译.


-------------*********源代码*******---------



using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Web;
using System.Net;

namespace HTMLGet
{
/// <summary>
/// Form1 の概要の説明です。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
/// <summary>
/// 必要なデザイナ変数です。
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//译文:对 windows form designer supprot. 必要的.
InitializeComponent();

//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//译文:调用InitializeComponent 后,请添加construct code.
}

/// <summary>
/// 使用されているリソースに後処理を実行します。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///译文:这是对 windows form designer supprot的必要的 修改,补丁(mend).这一小块的代码或数据请勿变动.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(136, 48);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.button1});
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
///译文:这里是application’s main 或enter point .
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
Read();
}

private void Read()
{
Stream stream = null;
StreamReader sr = null;

try
{
WebRequest webReq = HttpWebRequest.Create( "http://xww.fxsz.com.cn" );
webReq.Method = "GET";
// 1秒でタイムアウトさせる。译文:timeout 设为1秒.
webReq.Timeout = 1000000;
// IE のプロキシ設定を使用する。译文:使用IE的proxy设定
webReq.Proxy = System.Net.WebProxy.GetDefaultProxy();

WebResponse webRes = webReq.GetResponse();
// HttpWebRequest からストリームを取得する。
//译文:从HttpWebRequest得到 stream
stream = webRes.GetResponseStream();
// 1行ごとに扱いたいので、StreamReader にする。
//译文:在streamreader 中想得到一行
sr=new System.IO.StreamReader(stream, Encoding.GetEncoding("x-euc-jp"));

string str;
str = sr.ReadToEnd();
MessageBox.Show(str);
//Debug.WriteLine(str);
}
catch (Exception exc)
{
// わかりやすいメッセージに変える。
//变成可以理解的message
//throw(new Exception("xxxに接続できませんでした。"));
throw(new Exception("不能连接到XXX"));
}
finally
{
if (sr != null) sr.Close();
if (stream != null) stream.Close();
}
}
}
}
回复
benzite 2003-06-21
引用别人的提取文本的程序,你试试:
s is the source code of the webpage.

private String fetchText(String s)
{
//Filter out HTML and JavaScript from the page, leaving only body text
s = Convert.ToString(Regex.Match(s, @"<body.+?</body>", RegexOptions.Singleline | RegexOptions.IgnoreCase)); //strip everything but <BODY>
s = Regex.Replace(s, "<script[^>]*?>.*?</script>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase); //strip JavaScript
s = Regex.Replace(s, "<[^>]*>", ""); //strip HTML tags
s = Regex.Replace(s, "&(copy|#169);|&(quot|#34);|&(amp|#38);|&(lt|#60);&(gt|#62);|&(nbsp|#160);|&(iexcl|#161);|&(cent|#162);|&(pound|#163);|·", " "); //strip symbols
s = s.Replace("\t", " "); //strip tabs
s = Regex.Replace(s, "([\r\n])+", " "); //strip carriage returns
s = Regex.Replace(s, "\\s\\s+", " "); //strip white space (must be last)
return s.Trim();
}
回复
saucer 2003-06-20
do multiple passes, for example

str = System.Text.RegularExpressions.Regex.Replace(YourString,@"<script[^>]*>.*?</script>","",RegexOptions.IgnoreCase);

str = System.Text.RegularExpressions.Regex.Replace(YourString,@"<style[^>]*>.*?</style>","",RegexOptions.IgnoreCase);


str = System.Text.RegularExpressions.Regex.Replace(YourString,@"<[^>]+>","");

回复
shyworm 2003-06-20
net_lover(孟子E章) : 你在说什么啊?

我不需要写html代码,而是需要C#代码来处理Html,转换成纯文本。
回复
孟子E章 2003-06-20
<body onclick="alert(document.documentElement.innerText)">
<a href="xxxxxxxxxxxx">dddddddddd</a>
回复
shyworm 2003-06-20
You are right. but it not work with <style> or <script>.
But your way is useful, thanks a lot!

Any more hints?
回复
saucer 2003-06-20
use regular expressions to filter out tags, for example (might not always work, for example, with <script>...):

str = System.Text.RegularExpressions.Regex.Replace(YourString,@"<[^>]+>","");
回复
相关推荐
2021年前端面试题及答案
前端面试汇总(2020年) 一 大纲 1、前言 2、前端工程化 3、前端设计模式 4、前端安全性问题 ...由于新冠肺炎疫情,现在成天呆在家里,加上也要准备面试,在家里看面试题...
怎么将html5代替div,几个最常用的用来代替Div的HTML5元素
虽说html5中大多数功能性的元素如等还得不到当前主流浏览器的支持(主要就是指IE浏览器了),但至少那些个与布局相关的元素同html5.js结合起来时我们是可以放心使用的,比如,,,,,,这几个最常用的元素。Article 和 ...
HTML(3):IE浏览器编程 - vcmute的专栏 - CSDNBlog
用户选取了ie浏览器中的一段文字copy到剪贴板,我的程序从剪贴板中取出文字并显示在edit框中,这在中文系统下没有任何问题,而当程序运行在英文日文98下时,ie中的中文字符从剪贴板中取后在edit框中显示乱码,...
HTML(3):IE浏览器编程
用户选取了ie浏览器中的一段文字copy到剪贴板,我的程序从剪贴板中取出文字并显示在edit框中,这在中文系统下没有任何问题,而当程序运行在英文日文98下时,ie中的中文字符从剪贴板中取后在edit框中显示乱码,...
IE浏览器整页截屏程序(二)
在上一篇随笔中,大家给出了不少建议,尤其是指出了截屏方法的不足之处。其实,使用上述方法去截屏也是逼不得已,...(1)新建一个Form应用程序,在窗体上添加一个Panel,假设Namepanel1,设置:panel1.AutoScroll...
Html基本结构、语法规则、常用标记/标签
Html基本结构、语法规则、常用标记/标签 (h1-h6/p /i/...XHTML是可扩展超文本标记语言(扩展XML文档)(Extensible text markup language); HTML5:指的是第五次大修改规范(新标准); 二、站`点的定义: 是存放整
文件上传与下载
文件上传与下载
上传图片shell绕过过滤的几种方法
一般网站图片上传功能都对文件进行过滤,防止webshelll写入。但不同的程序对过滤也不一样,如何突破过滤继续上传? 本文总结了七种方法,可以突破! 1、文件头+GIF89a法。(php)//这个很好理解,直接在php马最...
delphi操作webbrowser htmldocument,操作web界面
原文地址:https://www.cnblogs.com/endv/p/5983110.html {IHTMLDocument2 方法:} write //写入 writeln //写入并换行 open //打开一个流,以收集 document.write 或 document.writeln ...
Pdf File Writer 中文应用(PDF文件编写C#类库)
该文由小居工作室(QQ:2482052910) 翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写C#类库):http://www.cnblogs.com/wjs5943283/p/6528853.html  首先 Pdf File Writer 是一个很好用...
HTML基础
一、HTML基础 1、web的组成 结构(HTML、XHTML)表现(css)...新建:Ctrl+n 保存:ctrl+s 另存为:ctrl+shift+s 打开:ctrl+o 查找替换:ctrl+f 首选项参数面板:ctrl+u 边距窗口切换:ctrl+tab 显示隐藏面板:f...
Chrome(谷歌) http请求自动转化https
雷总镇楼 今天在工作中遇到一个很奇葩的问题,且听说细细说来! 一.问题回顾 本周接到一个优化需求,当我...在尝试用IE浏览器访问,竟然可以正常访问,什么鬼??? 二.问题探究 经过百度,发现网上的解决方案如下: Chrome 浏...
用Twebbrowser做可控编辑与MSHTML
首先要明白mshtml的属性方法: {IHTMLDocument2 方法:} write //写入 writeln //写入并换行 open //打开一个流,以收集 document.write 或 document.writeln 的输出 close //关闭并输出用...
windows和linux系统文件目录
/home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示。/lib:标准程序设计库,又 叫动态链接共享库,作用类似windows里的.dll文件。/sbin:系统管理命令,这 里存放的是系统...
firefox常见问题解答
问:什么下载的Firerfox无法安装? 答:Windows下安装Firefox时报告7-zip出错,这一般是安装文件被损坏或者下载不完全,解决方法是请换个下载软件或直接重新下载Firefox。 Linux 下 Firefox 安装出错,由于不同的 ...
IE10 开发人员工具详解(转)
现在网上关于IE10的开发人员工具并没有详细的中文资料,所以许多开发人员对IE10提供的开发人员工具知之甚少。但是IE10的开发人员工具功能强大,非常值得广大开发人员,甚至IE10的普通使用者学习使用。因此,本文...
怎样快速抓取网页中的FLASH动画
1、查看网页源代码,找到SWF文件的绝对地址,然后通过下载工具下载; 2、在浏览器的缓存文件里找; 3、用Flash辅助工具来查找,比如FlashJester Woof v1.0。 ***************************************** 巧抓...
兼容ie6,ie7,ie8,firefox,chrome浏览器的代码片段
hack实现方式和原理 #hacker{ color:red; *color:white; /*for ie6,ie7*/ *+color:blue; /*for ie7*/ _color:gray; /*for ie6*/ color:balck !important; /*for firefox*/ color:yellow ...
webmagic采集CSDN的Java_WebDevelop页面
使用webmagic采集博客类的网站示例
xp母盘制作流程+QQDLL修改和系统文件DLL修改(转)
1 分区:40G ( C:4G D:3G E:3G F:30G) 80G (c:4 D:3 e:3 f:70)2 安装操作系统:C盘NTFS格式3 安装驱动:主板驱动(intel)----硬盘IDE接口加速驱动IAA(如果是V...
xp母盘制作流程+QQDLL+系统文件DLL修改(转)
1 分区:40G ( C:4G D:3G E:3G F:30G) 80G (c:4 D:3 e:3 f:70)2 安装操作系统:C盘NTFS格式3 安装驱动:主板驱动(intel)----硬盘IDE接口加速驱动IAA(如果是V...
程序员英文
程序员专属英文词汇,科普文
ie网页分析(HttpWatch Pro) 中文版安装及使用方法
软件介绍:  HttpWatch是一款强大的网页数据分析工具 集成在Internet Explorer工具栏 包括网页摘要Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功能....甚至可以显示浏览器缓
JavaScript简介及JavaScript中的关键保留字、变量和数据类型
JavaScript简介,使用JavaScript,JavaScript语法构成,JavaScript中的关键字和保留字,JavaScript中的变量及JavaScript中的数据类型。
Firefox 使用常见问题和解决方法
Firefox 使用常见问题和解决方法问题多了不免找的眼花,...答:①把 .xpi文件拖进firefox窗口里,稍后就可以看到Firefox会询问你是否要安装这个扩展,点击“是”,重启浏览器即可。②Ctrl+O,选择你要安装的扩展,打开。★
常见电子书格式及其反编译思路
作者:马健主页:http://stronghorse.yeah.net电邮:stronghorse@tom.com版本:1.00日期:2004.05.30声明:本文可能夹杂大量技术术语,如果您对此... 本文仅仅从技术角度讨论电子书反编译问题,请勿之用于侵犯版权等
vue-devtools chrome 插件
chrome(谷歌浏览器)vue代码调试插件, 已打包。解压后,通过chrome扩展程序加载即可使用。 使用方法: 1、chrome浏览器输入地址“chrome://extensions/”进入扩展程序页面 2、勾选开发者模式 3、点击“加载已解压的扩展程序...”按钮,选择解压后的chrome文件夹,即可添加成功。 4、添加完vue-devtools扩展程序之后,我们在调试vue应用的时候,ch rome开发者工具中会看一个vue的一栏,点击之后就可以看见当前页面vue对象的一些信息
《UML面向对象需求分析与建模教程》 邹盛荣 主编 电子版 2016.01 .doc
PPT已在CSDN均可免费下载 《UML面向对象需求分析与建模教程》 邹盛荣 主编 电子版 2016.01 .doc 当当网上可购买纸质书: http://product.dangdang.com/23766413.html
yii2实战快餐系统
基于yii2开发的一套快餐系统,支持微信支付和支付宝支付。源代码托管到github上,搜索 abei2017/yii2.food 可以进入。 通过实战项目让yii2初学者更快的融入到实际项目开发中。
MFC上位机与STM32下位机通讯精讲
本课程主要介绍C++类库MFC上位机与STM32单片机的RS232、RS422、RS485、USB、LWIP以太网、CAN等接口进行稳定通信。课程主要从MFC和STM32基础开始,以编写上位机以及下位机为主,非常注重实践。 本课程主要目标是让大家学会MFC上位机的编程、STM32下位机编程。单单的会上位机或者下位机有时候体会不到通讯的乐趣,如果你单单会下位机,你学了本课程,你可以把你的数据以任何方式在windows上呈现出来,如果你只会上位机,你学了本课程你可以通过windows的串口、以太网、USB控制任何硬件设备。本课程的目标就是补偿大家的短处,让大家成为综合性人才,同时让大家体会到通讯中的更多乐趣。
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2003-06-20 02:13
社区公告

让您成为最强悍的C#开发者