首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

自动的读取其它网站网页显示的信息解决方案

2014-01-05 
自动的读取其它网站网页显示的信息这是我再网上找的代码,想学习用,但不完整,那位大侠能帮我程序给补充完整

自动的读取其它网站网页显示的信息
这是我再网上找的代码,想学习用,但不完整,那位大侠能帮我程序给补充完整,小妹我再此拜谢!!!(不懂C#,所以各位多包涵)
dt没有定义
Addline,SplitName没有定义
 private string GetWebContent(string Url)  
  {  
  string strResult="";  
  try  
  {  
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);  
     //声明一个HttpWebRequest请求  
  request.Timeout = 30000;  
  //设置连接超时时间  
  request.Headers.Set("Pragma", "no-cache");  
  HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
  Stream streamReceive = response.GetResponseStream();  
  Encoding encoding = Encoding.GetEncoding("GB2312");  
  StreamReader streamReader = new StreamReader(streamReceive, encoding);  
  strResult = streamReader.ReadToEnd();  
  }  
  catch  
  {  
  MessageBox.Show("出错");  
  }  
  return strResult;  
  }  
为了使用HttpWebRequest和HttpWebResponse,需填名字空间引用  
  using System.Net;  

以下是程序具体实现过程:  
private void button1_Click(object sender, EventArgs e)  
  {  
  //要抓取的URL地址  
  string Url = "http://list.mp3.baidu.com/topso/mp3topsong.html?id=1#top2";  

  //得到指定Url的源码  
   string strWebContent = GetWebContent(Url);  

  richTextBox1.Text = strWebContent;  
    //取出和数据有关的那段源码  
  int iBodyStart = strWebContent.IndexOf("<body", 0);  
  int iStart = strWebContent.IndexOf("歌曲TOP500", iBodyStart);  
  int iTableStart = strWebContent.IndexOf("<table", iStart);  
  int iTableEnd = strWebContent.IndexOf("</table>", iTableStart);  
  string strWeb = strWebContent.Substring(iTableStart, iTableEnd - iTableStart + 8);  

  //生成HtmlDocument  
   WebBrowser webb = new WebBrowser();  
  webb.Navigate("about:blank");  
  HtmlDocument htmldoc = webb.Document.OpenNew(true);  
  htmldoc.Write(strWeb);  
  HtmlElementCollection htmlTR = htmldoc.GetElementsByTagName("TR");  
  foreach (HtmlElement tr in htmlTR)  
  {  
  string strID = tr.GetElementsByTagName("TD")[0].InnerText;  
  string strName = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "MusicName");  
  string strSinger = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "Singer");  
  strID = strID.Replace(".", "");  
  //插入DataTable  
  AddLine(strID, strName, strSinger,"0");  

  string strID1 = tr.GetElementsByTagName("TD")[2].InnerText;  
  string strName1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "MusicName");  
  string strSinger1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "Singer");  
  //插入DataTable  
  strID1 = strID1.Replace(".", "");  
  AddLine(strID1, strName1, strSinger1,"0");  

  string strID2 = tr.GetElementsByTagName("TD")[4].InnerText;  
  string strName2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "MusicName");  
  string strSinger2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "Singer");  
  //插入DataTable  
  strID2 = strID2.Replace(".", "");  
  AddLine(strID2, strName2, strSinger2,"0");  

  }  
  //插入数据库  
  InsertData(dt);  
     
  dataGridView1.DataSource = dt.DefaultView;  
}  


[解决办法]
你要抓取内容然后保存入库
1.根据地址读取网页内容
2.拿到内容后分析,可以用正则匹配出你想要的数据或字段
3.保存入库
所以,关键并不在于你如何得到网站的内容,而在于,如何根据网站的内容筛选出你最终想要的内容,不同的需求匹配也不尽相同
[解决办法]
抓取内容正则匹配出你想要的数据或字段

热点排行