还是HtmlElementCollection,继续阅读吧。
2012-12-24 13:42
211 查看
HtmlElementCollection用法
通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序。比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名。分析系统在根据得到的数据进行数据分析。为业务提供参考数据。
为了完成以上的需求,我们就需要模拟浏览器浏览网页,得到页面的数据在进行分析,最后把分析的结构,即整理好的数据写入数据库。那么我们的思路就是:
1、发送HttpRequest请求。
2、接收HttpResponse返回的结果。得到特定页面的html源文件。
3、取出包含数据的那一部分源码。
4、根据html源码生成HtmlDocument,循环取出数据。
5、写入数据库。
程序如下:
为了使用HttpWebRequest和HttpWebResponse,需填名字空间引用
using System.Net;
以下是程序具体实现过程:
通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序。比方说我们有一个系统,要提取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; }
相关文章推荐
- 解析HTML最好的类还是微软自己的
- extern “C” 阅读笔记 (转自---http://www.vcfans.com/2008/03/extern-c-read-the-notes.html)
- [英语阅读]梦是黑白的还是彩色的
- 机器学习的学习资源--入门书-进阶书-入门视频-继续阅读推荐
- asp.net开发中原型用asp.net编写还是asp+html编写之我见
- 微信小程序继续填坑(还是返回string问题)
- 新增行与删除行 分类: 网页编程【html、js】 2009-12-04 18:39 587人阅读 评论(0) 收藏
- setTimeout()与setInterval() 分类: 网页编程【html、js】 2009-12-07 00:37 337人阅读 评论(0) 收藏
- MSDN,安装程序检测到的HTML帮助数据文件已损坏,无法继续。单击确定以关闭安装程序
- 不想做研发,换个方向还是继续坚持?——网上答疑(27)
- 遇到一个很有趣的问题,while(ture)或者for循环出现异常,继续执行还是跳出异常
- js + php 处理 永远的敌人 特殊符号 1 在网页上的显示问题 分类: php javascript js 特殊符号 html实体显示 html 2014-03-27 17:55 350人阅读 评论(0) 收藏
- HtmlNinja-用img标签还是background-image?
- 周鸿祎,高司令 2010-09-28 00:41 27469人阅读 评论(185) 收藏 举报 还是感到有必要将自己的一些想法快速记下来。 首先是对周鸿祎新员工演讲的看法。 就说实话这一点来说,周鸿祎比很多人强。所以我比较喜欢引用他的话,确实比较实在,不装逼。 至于一个公司招人的风格,是公司自己定的,别人也无权评价。有人说周是画大饼,忽悠员工卖命。废话,难道新员工讲话还有别的目的吗? 但我不认为周的选人思路在别的公司可以通行。原因是这样的:近十几年来,我们听到很多人有类似的说法,比如我们公司不要
- “浏览器设置从上次停下的地方继续,但是电脑重启打开后还是主页”问题的解决办法
- html阅读pdf文件主要代码。
- 有小孩的30多岁的程序员,过完年是继续在深圳还是回老家省会城市?
- 【阅读】《Head First HTML 与 CSS》第十一章——布局与定位
- 模块化的方法写脚本?——继续shell还是转去python?
- 继续坚持Windows XP,还是期待Windows 7?