最近做了一个项目,要求获取各大主流网页上的关键信息,本人以前了解过网页爬虫的知识,所以想到了网页爬虫了实现功能

第一次尝试:

采用webclient获取远程网页的内容,然后采用正则表达式进行过滤

但,由于正则表达式对我来说,书写起来比较复杂,研究个大半个月,一点进展都没有,每天看着正则表达式像看天书(回头需要向正则牛逼的人请教一下)

第一次尝试失败,项目马上就要验收了,这个功能一直卡壳了,,,,,,,,

突然有一次,在网上看到了有人提及到了HtmlAgilityPack这个开源的工具包,本想着试一下的态度(因为我对这个网页解析已经不抱有希望了)

仅仅有了几行的代码,居然跟我的需求一样实现了,万分高兴(此处使用HtmlAgilityPack需要学习一下xpath的一点知识,不过那些都很简单,比起正则太easy了)

好了,废话不多说,上代码

1、去官网上下载一个HtmlAgilityPack包,地址:http://htmlagilitypack.codeplex.com/

2、根据自己项目的.net版本,选择适合的版本,引入项目

3、开始写代码了

HtmlAgilityPack基本跟所有的类一样,直接使用里面的方法和属性就行,具体可以参考官网

//获取网页指定内容
public void GetHtml()
{
string htmlpath = "http://kaijiang.aicai.com/fcssq/";
//创建对象
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
WebClient webclient = new WebClient();
webclient.Credentials = CredentialCache.DefaultCredentials;//网络凭证
Byte[] pageData = webclient.DownloadData(htmlpath);
// string pagehtml = Encoding.Default.GetString(pageData); //默认编码
string pagehtml = Encoding.UTF8.GetString(pageData);//UTF-8编码 //用htmlagilitypack 解析网页内容 //加载html
doc.LoadHtml(pagehtml); //通过xpath 选中指定元素;xpath 参考:http://www.w3school.com.cn/xpath/xpath_syntax.asp
HtmlAgilityPack.HtmlNode htmlnode = doc.DocumentNode.SelectSingleNode("//div[@id='jq_openResult']");
StringBuilder sb = new StringBuilder();
string s = ""; HtmlAgilityPack.HtmlNodeCollection nodecollection = htmlnode.ChildNodes;
for (int i = 0; i < nodecollection.Count; i++)
{
if (nodecollection[i].InnerText.Trim()!="")
{
TextBox1.Text += nodecollection[i].InnerText + "-"; }
}
TextBox1.Text = TextBox1.Text.Substring(0, TextBox1.Text.Length - 1);
Console.WriteLine(s); }

至此,HtmlAgilityPack就完全按照自己的要求解析出来了网页上的任何你想要的,是不是很神奇~~

浅谈C#解析网页的更多相关文章

  1. 浅谈浏览器解析 URL+DNS 域名解析+TCP 三次握手与四次挥手+浏览器渲染页面

    (1)浏览器解析 URL 为了能让我们的知识层面看起来更有深度,我们应该考虑下面两个问题了: 从浏览器输入 URL 到渲染成功的过程中,究竟发生了什么? 浏览器渲染过程中,发生了什么,是不是也有重绘与 ...

  2. 浅谈抓取网页数据(奉上Demo)

    Demo源码 背景 曾经在公司做过一个比价系统,就是抓取其它网站上商品的价格并和自己公司的商品进行对应,然后展示出来,给pm提供一个定价的参考.后来,有同事的朋友在找工作的时候,猎头让其做一个抓取去哪 ...

  3. 浅谈optparse 解析命令行参数库

    使用的背景 在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数 在python中我们可以通过sys 模板的arg ...

  4. 浅谈JSONObject解析JSON数据

    我们在做jmeter接口测试时能会用beanshell断言,一般都会将返回值转成JSONObject对象进行处理.本文选取较为复杂json格式数据,也将适用于java接口测试. JSON数据 { &q ...

  5. 不会SQL也能做数据分析?浅谈语义解析领域的机会与挑战

    笔者按: 在第5次AI TIME PhD Debate上,笔者邀请了部分国内外语义解析领域的杰出华人学者共话语义解析的过去,现状和未来.本博客为笔者根据视频讨论总结的干货整理.对原视频感兴趣的同学可以 ...

  6. 浅谈html5网页内嵌视频

    更好的阅读体验:浅谈html5网页内嵌视频 如今在这个特殊的时代下:flash将死未死,微软和IE的历史问题,html5标准未定,苹果和谷歌的闭源和开源之争,移动互联网的大势所趋,浏览器各自为战... ...

  7. 浅谈 Java 主流开源类库解析 XML

    在大型项目编码推进中,涉及到 XML 解析问题时,大多数程序员都不太会选用底层的解析方式直接编码. 主要存在编码复杂性.难扩展.难复用....,但如果你是 super 程序员或是一个人的项目,也不妨一 ...

  8. 浅谈php生成静态页面

    一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...

  9. 浅谈局域网ARP攻击的危害及防范方法(图)

    浅谈局域网ARP攻击的危害及防范方法(图)   作者:冰盾防火墙 网站:www.bingdun.com 日期:2015-03-03   自 去年5月份开始出现的校内局域网频繁掉线等问题,对正常的教育教 ...

随机推荐

  1. mac laravel 环境变量设置bash_profile

    mac laravel 环境变量设置bash_profile >>>vim ~/.bash_profile '''text export PATH=$PATH:~/.composer ...

  2. 使用Netty实现的一个简单HTTP服务器

    1.HttpServer,Http服务启动类,用于初始化各种线程和通道 public class HttpServer { public void bind(int port) throws Exce ...

  3. Oracle分组后取某列最大值的行数据

    select * from ( select last_comment, row_number() over(partition by employeeid,roadline,stationname ...

  4. .NETFramework:DateTimeOffset

    ylbtech-.NETFramework:DateTimeOffset 表示一个时间点,通常相对于协调世界时(UTC)的日期和时间来表示. 1.程序集 mscorlib, Version=4.0.0 ...

  5. 七 vue学习 async/await

    1:  javaScript async/await: 调用async函数的时候,是异步的,函数后面的代码继续执行.! async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解 ...

  6. 【250】◀▶IEW-Unit15

    Unit 15 Youth Issues 1.model1题目分析 Young people who are still at school often feel just as much stres ...

  7. Struts&nbsp;result&nbsp;param详细设置

    <</span>result type="json"> <</span>param name="root">da ...

  8. 微信小程序开发之下拉菜单

    实现功能:点击维保人员,调出下拉菜单.选择子菜单时,显示右边的图标表示选中,并进行赋值并进行搜索筛选 Wxml: <view class="dtclass" bindtap= ...

  9. 微信小程序开发之tab导航栏

    实现功能: 点击不同的tab导航,筛选数据 UI:   js: data:{ navbar: ['半月维保', '季度维保', '半年维保',"年度维保"],    //count ...

  10. QDUOJ ycb的ACM进阶之路 二进制多重背包

    ycb的ACM进阶之路 发布时间: 2017年5月22日 14:30   最后更新: 2017年5月22日 14:31   时间限制: 1000ms   内存限制: 128M 描述 ycb是个天资聪颖 ...