来自: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. 让C#语言充当自身脚本!——.NET中的动态编译

    原文:让C#语言充当自身脚本!--.NET中的动态编译 代码的动态编译并执行是.NET平台提供给我们的很强大的一个工具,用以灵活扩展(当然是面对内部开发人员)复杂而无法估算的逻辑,并通过一些额外的代码 ...

  2. C-order/Fortran-order(Row-/Column-major order)

    1. row-major / column-major order 无论是行序优先还是列序优先,其实在计算机计算中,指的都是在线性空间(linear storage,如 RAM,也即连续内存存储 co ...

  3. 如何停止处于stopping状态的windows服务(使用taskkill)

    工作中有时需要启动和停止windows service,有时候会出现服务处于stopping或者starting的状态,但是,在services界面中,start service/stop servi ...

  4. 人猿方案Ubuntu这些软件的安装

    鄙人程序员一枚,Android开发,常年使用Ubuntu(主要是买不起Mac.O(∩_∩)O哈哈~).分享一下自己使用的那些软件.假设你有什么好的软件.欢迎与我交流. 输入法:開始的时候是用的fcit ...

  5. WinRAR 5.50 简体中文正式版发布(20多项改进)

    感谢ikimi的投递 流行好用的压缩工具,支持鼠标拖放及外壳扩展,完美支持 ZIP 档案,内置程序可以解开 CAB.ARJ.LZH.TAR.GZ.ACE.UUE.BZ2.JAR.ISO 等多种类型的压 ...

  6. redis zincrby zadd 遇到的问题

    在维护代理池时 报错1: zincrby(REDIS_KEY,proxy,-1)redis.exceptions.ResponseError: value is not a valid float 查 ...

  7. 汇编实现获取CPU信息

    这是文章最后一次更新,加入了TLB与Cache信息等资料前言:论坛上面有人不明白CPUID指令的用法,于是就萌生写这篇文章的想法,若有错误话请大侠指出,谢谢了 ^^论坛的式样貌似有问题,若式样问题导致 ...

  8. 绕过010Editor网络验证(用python做一个仿真http server真容易,就几行代码)

    010Editor是一款非常强大的十六进制编辑器,尤其是它的模板功能在分析文件格式时相当好用!网上现在也有不少010Editor的破解版,如果没钱或者舍不得花钱买授权的话,去官方下载安装包再使用注册机 ...

  9. WPF 资源(StaticResource 静态资源、DynamicResource 动态资源、添加二进制资源、绑定资源树)

    原文:WPF 资源(StaticResource 静态资源.DynamicResource 动态资源.添加二进制资源.绑定资源树) 一.WPF对象级(Window对象)资源的定义与查找 实例一: St ...

  10. Windows 10开发基础——文件、文件夹和库(二)

    主要内容: 使用选取器打开和保存文件 关于文件.文件夹和库,如果深究其实还是有比较多的内容,我们这一次来学习一下选取器就收了.还有上篇博文中读写文本文件的三种方式可以细细体会一下. 文件选取器包含文件 ...