来自: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. mac下装php5.6

    OS X10.11自带了php5.5,项目中使用的是php5.6,用brew install --without-apache --with-fpm --with-mysql php56装php5.6 ...

  2. gdal库中设置prj4库全路径的用法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 gdal库实现投影转换之类的功能实际上底层都是调用prj4库的功能.如果gdal使用非静态的方式集成prj4库,实际上 ...

  3. javascript 获取上一周的时间

    <script type="text/javascript" language="javascript"> //获取系统时间 var LSTR_nd ...

  4. HDU1078 FatMouse and Cheese 【内存搜索】

    FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  5. POJ 1328 Radar Installation(经典贪婪)

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 54143   Accepted: 12 ...

  6. ude—基于udp的全双工可靠传输协议

    ude是一款基于udp的可靠传输协议,专门用于在数据传输方面对实时性要求较高的应用领域.    tcp协议虽然能保证数据的可靠传输,但它有以下几个缺点:1.tcp的数据确认机制会导致发送方重复发送一些 ...

  7. OpenCV实现朴素贝叶斯分类器诊断病情

    贝叶斯定理由英国数学家托马斯.贝叶斯(Thomas Baves)在1763提出,因此得名贝叶斯定理.贝叶斯定理也称贝叶斯推理,是关于随机事件的条件概率的一则定理. 对于两个事件A和B,事件A发生则B也 ...

  8. WPF:WebBrowser提示 为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容

    原文:WPF:WebBrowser提示 为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://bl ...

  9. 机器学习: Tensor Flow with CNN 做表情识别

    我们利用 TensorFlow 构造 CNN 做表情识别,我们用的是FER-2013 这个数据库, 这个数据库一共有 35887 张人脸图像,这里只是做一个简单到仿真实验,为了计算方便,我们用其中到 ...

  10. WPF 图形绘制 及各种线帽、箭头的实现

    原文:WPF 图形绘制 及各种线帽.箭头的实现  /// <summary>     /// 矩形类     /// </summary>     public sealed ...