来自: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. CMake 添加头文件目录,链接动态、静态库(添加子文件夹)

    CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...

  2. Qt中(图片)资源的三种使用方式

    Qt中使用图片资源的方法有很多种,以前我一直分不清各种之间的区别和Qt相应的处理机制,后来遇到一些实际的问题,然后再加上查阅源码和资料,总算弄明白一些事情,但是本文仅仅是个人理解,如有错误之处请告诉我 ...

  3. 怎么会float交换器int

    最近突然想知道编译器整数浮球开关是如何实现的,现在很多信息,但遗憾的是甚至没有这方面的记录,所以我决定实现自己的简单的整数浮点转 随着float开启int为例  double转int类似 在做强转之前 ...

  4. https学习笔记

    HTTPS协议 HTTPS可以认为是HTTP + TLS.HTTP协议大家耳熟能详了,目前大部分WEB应用和网站都是使用HTTP协议传输的.TLS是传输层加密协议,它的前身是SSL协议,最早由nets ...

  5. Java踩坑之路

    陆陆续续学Java也快一年多了,从开始的一窍不通到现在的初窥门径,我努力过,迷茫过,痛过,乐过,反思过,沉淀过.趁着新年,我希望能把这些东西记下来,就当是我一路走来的脚印. 一.初识网站应用 记得第一 ...

  6. Android获取百度音乐下载音乐和歌词下载链接

    首先,你必须通过以下连接下载歌曲: http://box.zhangmen.baidu.com/x?op=12&count=1&title={title}$${author}$$$$ ...

  7. 经典数字图像处理(matlab 实现)

    Ivan Selesnick(Software) Sparsity / Total variation / Denoising Software - Michael Elad's Personal P ...

  8. 构建自己的PHP框架(日志)

    完整项目地址:https://github.com/Evai/Aier 日志在程序开发中有着十分重要的作用,帮助开发者更快的找到程序错误并即时处理.下面制作一个非常简单的记录日志类. 在 servic ...

  9. Python 绘图利器 —— ggplot

    安装: 命令行:pip install ggplot 1. 杂项 NameError: name 'ggsave' is not defined. Python ggplot- ggsave func ...

  10. dom写法和jquery写法

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...