来自:http://www.jb51.net/article/9499.htm

通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序。比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名。分析系统在根据得到的数据进行数据分析。为业务提供参考数据。 
  为了完成以上的需求,我们就需要模拟浏览器浏览网页,得到页面的数据在进行分析,最后把分析的结构,即整理好的数据写入数据库。那么我们的思路就是: 
  1、发送HttpRequest请求。 
  2、接收HttpResponse返回的结果。得到特定页面的html源文件。 
  3、取出包含数据的那一部分源码。 
  4、根据html源码生成HtmlDocument,循环取出数据。 
  5、写入数据库。

程序如下:  

//根据Url地址得到网页的html源码 
         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; 
}

C#抓取远程Web网页信息的代码的更多相关文章

  1. C#实现通过程序自动抓取远程Web网页信息的代码

    http://www.jb51.net/article/9499.htm 通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序.比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名.分析系统在 ...

  2. 使用Python中的urlparse、urllib抓取和解析网页(一)(转)

    对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过Python 语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...

  3. C#抓取和分析网页的类

    抓取和分析网页的类. 主要功能有: Ontology 1.提取网页的纯文本,去所有html标签和javascript代码 2.提取网页的链接,包括href和frame及iframe 3.提取网页的ti ...

  4. 【转载】ASP.NET以Post方式抓取远程网页内容类似爬虫功能

    使用HttpWebRequest等Http相关类,可以在应用程序中或者网站中模拟浏览器发送Post请求,在请求带入相应的Post参数值,而后请求回远程网页信息.实现这一功能也很简单,主要是依靠Http ...

  5. Python中的urlparse、urllib抓取和解析网页(一)

    对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过Python 语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...

  6. php使用curl简单抓取远程url的方法

    这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php使用curl抓取远程url的方法.分 ...

  7. 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)

    Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ...

  8. 用python抓取智联招聘信息并存入excel

    用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...

  9. Selenium模拟浏览器抓取淘宝美食信息

    前言: 无意中在网上发现了静觅大神(崔老师),又无意中发现自己硬盘里有静觅大神录制的视频,于是乎看了其中一个,可以说是非常牛逼了,让我这个用urllib,requests用了那么久的小白,体会到sel ...

随机推荐

  1. 【27.34%】【codeforces 611D】New Year and Ancient Prophecy

    time limit per test2.5 seconds memory limit per test512 megabytes inputstandard input outputstandard ...

  2. ServletContextListener接口用法

    ServletContextListener接口用于tomcat启动时自动加载函数,方法如下: 一.需加载的类必须实现ServletContextListener接口. 二.该接口中有两个方法必须实现 ...

  3. WPF依赖属性(续)(1)

    原文:WPF依赖属性(续)(1)                 之前有写过几篇文章,详细地介绍了依赖属性的基本使用方法,如果你不想了解其内部实现机制的话,那么通过那两篇文章的介绍,足以应付平时的应用 ...

  4. Math对象重新整理

    注意:Math 对象是一个固有的对象,无需创建它,直接把 Math 作为对象使用就可以调用其所有属性和方法.这是它与Date,String对象的区别. Math对象的属性 --Math对象包含的属性大 ...

  5. 使用哈希加盐法来为密码加密(补充JAVA的实现)

    使用哈希加盐法来为密码加密 转自:http://www.cnblogs.com/jfzhu/p/4023439.html 转载请注明出处   (一)为什么要用哈希函数来加密密码 如果你需要保存密码(比 ...

  6. TCP/UDP 报头格式

    参考:https://www.cnblogs.com/MRRAOBX/articles/4540228.html TCP: 源端口号  以及 目的端口号  32位 序列号  seq 确认号  ACK ...

  7. 《用户体验要素》澄清了 UI 原型设计中看不见确感受得到的那一层

    <用户体验要素>澄清了看不见确感受得到的那一层 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&quo ...

  8. 使用WPF将图片转变为灰度并加上水印并保存为文件

    原文:使用WPF将图片转变为灰度并加上水印并保存为文件 运行效果: (上图中左下角为原图的缩小显示,By:Johnson为TextBlock)保存的结果图片:上图的"Test Words.& ...

  9. 学习vi和vim编辑(4):高速移动定位

    平时.第一步是编辑文本需要做将光标移动到需要编辑.因此,根据需要,将光标移动到目标数字键来编辑文本的速度在一定程度上. 一篇文章.主要介绍怎样高速移动光标. 依据屏幕来移动: 在一个有几千行文本的文件 ...

  10. Python实现多线程下载

    #!/usr/bin/python # -*- coding: utf-8 -*- # filename: paxel.py '''It is a multi-thread downloading t ...