来自: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. 用Github账号领Ripple币

    最近随着比特币在互联网上的流行,其他各种电子货币也都增加了曝光率. 昨晚在 v2ex 上看到有人发帖,用 20RMB 换取 2013 年 5 月 1 日前使用过的 github 账号得到的一个验证码. ...

  2. DEA上安装和使用checkstyle,findbugs,visualVM,PMD插件

    ##安装插件步骤: 1.打开settings 2.选择plugins 3.点击"Browse repositories" 4.搜索对应内插件,点击"install&quo ...

  3. 理解 iOS 和 macOS 的内存管理

    在 iOS 和 macOS 应用的开发中,无论是使用 Objective-C 还是使用 swift 都是通过引用计数策略来进行内存管理的,但是在日常开发中80%(这里,我瞎说的,8020 原则嘛

  4. bash实现多进程运行

    之前一段时间,发现线上日志服务器总是会突然丢失日志,碰到问题时搞的很被动.联系运维同学,又总是被往后推(后来看了一下日志归档脚本,运维同学写的bug).索性自己写了一个脚本,添加到crontab任务中 ...

  5. C#常用多线程方法

    1.  Thread类 C#多线程编程中Thread类需要包含名称空间System.Threading. class Program { static void Main(string[] args) ...

  6. C# WPF 左侧菜单右侧内容布局效果实现

    原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换. wpf实现的话,我的办法是用一个tabcon ...

  7. Win10忘记ubuntu子系统密码

    原文:Win10忘记ubuntu子系统密码 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wf19930209/article/details/80 ...

  8. day68_淘淘商城项目_01_电商介绍 + 互联网术语 + SOA + 分布式 + 集群介绍 + 环境配置 + 框架搭建_匠心笔记

    课程计划 第一天: 1.电商行业的背景介绍--电子商务 2.淘淘商城的系统架构 a) 功能介绍 b) 架构讲解 3.工程搭建--后台工程 a) 使用maven搭建工程(工程大) b) 使用maven的 ...

  9. hbase结合hive和sqoop实现数据指导mysql

    hive综合hbase两个优势表中的:     1.实现数据导入到MYSQL.     2.实现hbase表转换为另外一张hbase表.  三个操作环节:      1.hbase关联hive作为外部 ...

  10. The bundle does not contain an app icon for iPhone / iPod Touch of exactly &#39;120x120&#39; pixels, in .pn

    xcode 6.3 载发生时的应用'Missing recommended icon file - The bundle does not contain an app icon for iPhone ...