如何获取网页的纯文本内容

byustep 2010-01-05 02:36:53
我这样处理的,

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using MSXML2;

namespace Downloader
{
class Program
{
static void Main(string[] args)
{
string url = "http://quote.morningstar.com/fund/f.aspx?Country=USA&Symbol=AGDAX";
WebRequest request = WebRequest.Create(url);
request.ContentType = "text/plain";
WebResponse response = request.GetResponse();

using (StreamWriter writer = new StreamWriter(new FileStream("C:\\1.txt", FileMode.Create)))
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
writer.WriteLine(reader.ReadToEnd());
}
}
}
}
}

单调试的时候发现,webresponse的contenttype并不是想要的“text/plain",而是“text/html",为什么呢?到底该如何获取?
...全文
671 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
byustep 2010-01-16
  • 打赏
  • 举报
回复
自己解决了,用WebBrowser控件打开WebPage,然后取里面的InnerHtml就能够得到数据。
linekery 2010-01-05
  • 打赏
  • 举报
回复
<div><script>if(2>1){}</script></div>
帮俺正则一个 :D

总想取 纯文本 没意思。 html 太恶了
lioukaiwen 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 byustep 的回复:]
哦,说错了。保存成html根本没有我想要的dividend数据,只有在文件-》保存-》Text格式的时候才会有。

所以说的这种用正则表达式匹配还用不上唉!!!
[/Quote]

阿什顿 撒的撒
lioukaiwen 2010-01-05
  • 打赏
  • 举报
回复
lioukaiwen 2010-01-05
  • 打赏
  • 举报
回复
dfgfdg
  • 打赏
  • 举报
回复
html标记有两种形式:
1,<html> ... </html>两个标记中间夹内容,中间夹的内容是要保留的,而标记是要删的
2,<div id="abc"/> 在一行之间完成的,这个要全部删掉,因为它是元素的属性说明

有的要全删,有的只要删头尾标记,所以要仔细定好规则,然后用递归算法执行,最后返回一个没有Html标记的纯的文本

难度就在定规则
vip__888 2010-01-05
  • 打赏
  • 举报
回复
string s=Regex.Replace("", " <[^>]*>", "");
byustep 2010-01-05
  • 打赏
  • 举报
回复
哦,说错了。保存成html根本没有我想要的dividend数据,只有在文件-》保存-》Text格式的时候才会有。

所以说的这种用正则表达式匹配还用不上唉!!!
byustep 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zengzhan 的回复:]
引用 3 楼 byustep 的回复:
引用 2 楼 zengzhan 的回复:
谢谢你的回复,不过我执行了一下你的代码,好像返回的结果也是html格式的,并不是纯文本。你可以确认一下吗?


用正则去掉html标记:

C# coderow= Regex.Replace(row,@"<[\/\!]*?[^<>]*?>","");去掉所有HTML标记.
其中row为要去掉的字符串,然后按指定的正则进行去掉标记

[/Quote]

我查到有个XMLHttpRequest,他有个RequestText属性,是纯文本格式应该是。但是这个只能用与Script语言。

我其实是想去url里面的dividend(股息分红)数据,如果像你们说的那样用正则表达式去掉一些多余标签的话,会导致格式混乱。我是这样想的,明天试试你们说的用正则表达式吧。

谢谢各位!!!
kensouterry 2010-01-05
  • 打赏
  • 举报
回复
没有标记的话,你读取出来的那些内容还有意义吗?
兔儿爷 2010-01-05
  • 打赏
  • 举报
回复
回头我试试
wuyq11 2010-01-05
  • 打赏
  • 举报
回复
先获取网页内容,再使用正则格式化获取文本
string s=Regex.Replace("", "<[^>]*>", "");
qqzeng-ip 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 byustep 的回复:]
引用 2 楼 zengzhan 的回复:
谢谢你的回复,不过我执行了一下你的代码,好像返回的结果也是html格式的,并不是纯文本。你可以确认一下吗?
[/Quote]

用正则去掉html标记:

row = Regex.Replace(row,@"<[\/\!]*?[^<>]*?>","");
去掉所有HTML标记.
其中row为要去掉的字符串,然后按指定的正则进行去掉标记

byustep 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zengzhan 的回复:]
C# codeHttpWebRequest myReq= (HttpWebRequest)WebRequest.Create("http://quote.morningstar.com/fund/f.aspx?Country=USA&Symbol=AGDA");
myReq.Accept="Accept-Language: zh-cn";
myReq.Referer="?-
[/Quote]

谢谢你的回复,不过我执行了一下你的代码,好像返回的结果也是html格式的,并不是纯文本。你可以确认一下吗?
qqzeng-ip 2010-01-05
  • 打赏
  • 举报
回复
HttpWebRequest   myReq   =   (HttpWebRequest)WebRequest.Create("http://quote.morningstar.com/fund/f.aspx?Country=USA&Symbol=AGDA");  
myReq.Accept="Accept-Language: zh-cn";
myReq.Referer="http://quote.morningstar.com/fund/f.aspx?Country=USA&Symbol=AGDA";
myReq.MaximumAutomaticRedirections=1;
myReq.AllowAutoRedirect=true;
HttpWebResponse myres=(HttpWebResponse)myReq.GetResponse();//
Stream resStream = myres.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);

Response.Write(sr.ReadToEnd());

l171147904 2010-01-05
  • 打赏
  • 举报
回复
...

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧