怎么读取别的网页上面的新闻到自己网页上面(asp.net)(急急急!!!)

zhaochanglong 2010-07-19 10:21:38
要实现一个读取别人网页上面的新闻,然后在自己的网页上面显示,页面的样式都要是自己的
在线等待高人指点。。
...全文
80 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinalinx 2010-07-19
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;

namespace MCore.BLL
{
public class GetPage
{
/// <summary>
/// 获取指定URL页面的内容,使用HttpWebRequest方式
/// </summary>
/// <param name="xURL">URL的字符串表现形式</param>
/// <param name="encode">页面使用的编码</param>
/// <returns>返回页面HTML代码</returns>
public string Get_Page(string xURL)
{
string content = "";
HttpWebRequest httpget = (HttpWebRequest)HttpWebRequest.Create(xURL);
try
{
HttpWebResponse httpres = (HttpWebResponse)httpget.GetResponse();
Stream httpstr = httpres.GetResponseStream();
StreamReader sr = new StreamReader(httpstr, Encoding.Default);
content = sr.ReadToEnd();
sr.Close();

}
catch (Exception)
{

}
return content;
}

/// <summary>
/// 获取指定内容中的部分信息
/// </summary>
/// <param name="PageContent">指定内容</param>
/// <param name="RegStr">要获取信息的正则表达式</param>
/// <returns>最后匹配的结果集</returns>
public string[] Get_Info(string PageContent, string RegStr)
{
ArrayList info = new ArrayList();
Regex RegURL = new Regex(RegStr);
foreach (Match myMatch in RegURL.Matches(PageContent))
{
info.Add(myMatch.ToString());
}
string[] Infos = new string[info.Count];
info.CopyTo(Infos);
if (info.Count == 0)
{
Infos = new string[1] { "" };
}
return Infos;
}

/// <summary>
/// 获取指定URL页面的内容,使用HttpWebRequest方式
/// </summary>
/// <param name="xURL">URL的字符串表现形式</param>
/// <param name="encode">页面使用的编码</param>
/// <returns>返回页面HTML代码</returns>
public string Get_Page(string xURL, Encoding encode)
{
string content = "";
HttpWebRequest httpget = (HttpWebRequest)HttpWebRequest.Create(xURL);
try
{
HttpWebResponse httpres = (HttpWebResponse)httpget.GetResponse();
Stream httpstr = httpres.GetResponseStream();
StreamReader sr = new StreamReader(httpstr, encode);
content = sr.ReadToEnd();

}
catch (Exception)
{

}
return content;
}

public string GetPageContent(string url, string postdata, string encode, string method, CookieContainer cc)
{
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.KeepAlive = true;
objRequest.AllowAutoRedirect = true;
objRequest.UserAgent = "Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+Alexa+Toolbar)";
objRequest.CookieContainer = cc;
objRequest.Method = method;
objRequest.Referer = url;
objRequest.ProtocolVersion = System.Net.HttpVersion.Version11;

if (method.ToLower() == "post")
{
objRequest.ContentType = "application/x-www-form-urlencoded";
byte[] bytes = Encoding.GetEncoding(encode).GetBytes(postdata);
objRequest.ContentLength = bytes.Length;
Stream outStream = objRequest.GetRequestStream();
outStream.Write(bytes, 0, bytes.Length);
outStream.Close();
}

try
{
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
Stream objStream = objResponse.GetResponseStream();
StreamReader sr = new StreamReader(objStream, System.Text.Encoding.GetEncoding(encode));
return sr.ReadToEnd();
}
catch (Exception ex)
{
return ex.ToString();
}
}
}
}
zhaochanglong 2010-07-19
  • 打赏
  • 举报
回复
有正则表达式吗?
阿彪兄 2010-07-19
  • 打赏
  • 举报
回复
WebClient提供发送数据以及从URL标识的资源获得数据的常用方法
WebClient使用WebRequest类提供访问Internet资源的方式
WebClient以更高的级别封装WebRequest类,并提取了大部分的细节
WebClient方法
OpenWrite():发送流
UploadData():发送字节数组,并在响应时返回字节数组
OpenFile():发送本地文件
UploadValues():发送名值集合
DownLoadData():下载数据并返回字节数组
DownLoadFile():把得到数据下载给本地文件
OpenRead():把从资源得到的数据返回为流
例1. WebClient类使用
前台:
输入URL:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:Button ID="btnGetData" runat="server" Text="得到数据" OnClick="btnGetData_Click" /><br />
<asp:TextBox ID="TextBox4" runat="server" Height="117px" TextMode="MultiLine" Width="312px"></asp:TextBox><br />
要下载的文件地址URL:<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<asp:Button ID="btnDownLoad" runat="server" Text="下载文件" OnClick="btnDownLoad_Click" />
后台:
using System.Net;
using System.IO;
using System.Net.Sockets;
protected void btnGetData_Click(object sender, EventArgs e)
{
WebClient client = new WebClient();
Stream response = client.OpenRead(TextBox3.Text);
TextBox4.Text = "";
int nByteData;
do
{
nByteData = response.ReadByte();
if (nByteData > 0)
TextBox4.Text += Convert.ToChar(nByteData);
}while (nByteData > 0);
response.Close();
}
protected void btnDownLoad_Click(object sender, EventArgs e)
{
WebClient client = new WebClient();
string strDes = "e:\\"+Path.GetFileName(TextBox5.Text);
client.DownloadFile(TextBox5.Text,strDes);
Response.Write("目标地址为:"+strDes);
}
*WebClient以更高的封装方式封闭了WebRequest.
一. 使用WebRequest和WebResponse
可以组合WebRequest和WebResponse类,从Internet资源请求数据,然后读取响应
例2. WebRequest与WebResponse类使用实例
前台:
URL地址:<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox> <asp:Button ID="btnGet"
runat="server" Text="获取数据" OnClick="btnGet_Click" /><br />
<asp:TextBox ID="TextBox1" runat="server" Height="133px" TextMode="MultiLine" Width="294px"></asp:TextBox>
后台:
using System.Net;
using System.IO;
using System.Net.Sockets;
using System.Text;
protected void btnGet_Click(object sender, EventArgs e)
{
WebRequest req = WebRequest.Create(TextBox6.Text);
WebResponse res = req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
Encoding ecode = Encoding.GetEncoding("utf-8");
StreamReader sr = new StreamReader(ReceiveStream,ecode);
Char[] ReadBuffer = new Char[256];
int nCount = sr.Read(ReadBuffer,0,256);
while (nCount > 0)
{
string str = new string(ReadBuffer,0,nCount);
TextBox1.Text += str;
nCount = sr.Read(ReadBuffer,0,256);
}
}
zhaochanglong 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wybxs2006 的回复:]
数据采集,用WebClient,WebRequest,WebReponse实时访问
[/Quote]

有例子吗?
jiankeqcaf 2010-07-19
  • 打赏
  • 举报
回复
如果是rss新闻很好办,不是rss只有采集了
v_yao 2010-07-19
  • 打赏
  • 举报
回复
webclient
阿彪兄 2010-07-19
  • 打赏
  • 举报
回复
数据采集,用WebClient,WebRequest,WebReponse实时访问

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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