雁过留痕 小小的天空,也有大大的梦想

使用HtmlAgilityPack抓取html标签属性内容

        static void Main(string[] args)
        {
            HtmlWeb webClient = new HtmlWeb();
            HtmlDocument doc = webClient.Load("http://www.iqiyi.com/v_19rrdze0xk.html#vfrm=24-9-0-1");
 
            #region [获取 head meta property(键) content(值)]
            HtmlNodeCollection meat_property_List = doc.DocumentNode.SelectNodes(".//meta[@property]");
            if (meat_property_List != null)
            {
                Console.WriteLine();
                Console.WriteLine("[获取 head meta property(键) content(值)]");
                foreach (HtmlNode meat_property in meat_property_List)
                {
                    HtmlAttribute property_att = meat_property.Attributes["property"];
                    HtmlAttribute content_att = meat_property.Attributes["content"];
                    Console.WriteLine(string.Format("{0}\t:\t{1}", property_att.Value, content_att.Value));
                }
            }
            #endregion
 
            #region [获取 head meta name(键) content(值)]
            HtmlNodeCollection meat_name_List = doc.DocumentNode.SelectNodes(".//meta[@name]");
            if (meat_name_List != null)
            {
                Console.WriteLine();
                Console.WriteLine("[获取 head meta name(键) content(值)]");
                foreach (var meat_name in meat_name_List)
                {
                    HtmlAttribute name_att = meat_name.Attributes["name"];
                    HtmlAttribute content_att = meat_name.Attributes["content"];
                    Console.WriteLine(string.Format("{0}\t:\t{1}", name_att.Value, content_att.Value));
                }
            }
            #endregion
 
            #region [获取 title]
            Console.WriteLine();
            Console.WriteLine("[获取 title]");
            var titleObj = doc.DocumentNode.SelectSingleNode("//title");
            if (titleObj != null)
            {
                Console.WriteLine("title:" + titleObj.InnerText);
            }
            #endregion
 
            #region [获取 首个 img src]
            Console.WriteLine();
            Console.WriteLine("[获取 首个 img src]");
            var imgObj = doc.DocumentNode.SelectSingleNode("//img");
            if (imgObj != null)
            {
                string src = imgObj.Attributes["src"].Value;
                Console.WriteLine("img src:" + src);
            }
            #endregion
 
            Console.ReadKey();
        }

2018年7月6日 | 发布:admin | 分类:学习笔记 | 评论:0

HTML Agility Pack:簡單好用的快速 HTML Parser

 

HTML Agility Pack:簡單好用的快速 HTML Parser

HTML Agility Pack:簡單好用的快速 HTML Parser

Codeplex 軟體套件(Package)資訊
套件名稱HTML Agility Pack
作者Simon Mourier
目前版本1.4.0 Beta 2
URLhttp://htmlagilitypack.codeplex.com/
使用難易度
使用此套件時可用的輔助工具HAP Explorer(可在上述 URL 找到)
Internet Explorer 8 開發者工具
基礎知識HTML
XML 和 XPath
最好有使用過 System.Xml 命名空間中的 XmlDocument 類別,以及其 SelectNodes() 或 SelectSingleNode() 方法。

解析 HTML:Web 開發人員心中的痛

自從 Web 應用程式自 1993 年 W3C 設立以來就開始發展,而且 HTML 也歷經了數個版本的演化(1.0 – 2.0 – 3.0 – 3.2 – 4.0 – 4.01),現在也已經成為Web網頁或應用程式的最基礎,想要學習如何設計 Web 網頁或開發 Web 應用程式,這已經是絕對必須要學的東西了,就算是方便的控制項充斥(例如 ASP.NET),但 HTML 仍然有學習它的必要性,因此如果不會 HTML,就等於沒學過 Web 網頁般。

2018年7月6日 | 发布:admin | 分类:学习笔记 | 评论:0

基于C#.NET实现通用的验证码识别组件(策略设计模式)

 

基于C#.NET实现通用的验证码识别组件(策略设计模式)

全栈解密 2016-07-01 19:54:39

相信大家在开发过程中,基本都用到过验证码识别程序。一提到验证码识别,绝大多数兄弟想到的都是用C++的效率配上牛逼哄哄的二值化、边缘检测等算法来实现。但这种识别方式的依赖性太强,不可重用,无法扩展,假设对方稍微修改下验证码的变形算法(做过网站的都知道有多简单),可能你累死累活搞出来的识别程序就全部作废了。

2018年6月27日 | 发布:admin | 分类:学习笔记 | 评论:0

基于C#.NET的高端智能化网络爬虫(二)(攻破携程网)

 

基于C#.NET的高端智能化网络爬虫(二)(攻破携程网)

全栈解密 2016-07-13 17:55:53

本篇故事的起因是携程旅游网的一位技术经理,豪言壮举的扬言要通过他的超高智商,完美碾压爬虫开发人员,作为一个业余的爬虫开发爱好者,这样的言论我当然不能置之不理。因此就诞生了上一篇基础爬虫以及这一篇高级爬虫的开发教程。

2018年6月27日 | 发布:admin | 分类:学习笔记 | 评论:0

基于C .NET的高端智能化网络爬虫(一)(反爬虫哥必看)

 

基于C .NET的高端智能化网络爬虫(一)(反爬虫哥必看)

全栈解密 2016-07-07 16:55:12

前两天朋友发给我了一篇文章,是携程网反爬虫组的技术经理写的,大概讲的是如何用他的超高智商通过(挑衅、怜悯、嘲讽、猥琐)的方式来完美碾压爬虫开发者。今天我就先带大家开发一个最简单低端的爬虫,突破携程网超高智商的反爬虫技术。

2018年6月27日 | 发布:admin | 分类:学习笔记 | 评论:0

JavaScript Object 对象详解

JavaScript中的Object对象,是JS中所有对象的基类,也就是说JS中的所有对象都是由Object对象衍生的。Object对象主要用于将任意数据封装成对象形式。

2018年5月9日 | 发布:admin | 分类:学习笔记 | 评论:0

关于js代码重要笔记

 一、新建一个对象,赋予相关属性值

var CVR_IDCard=new Object();
CVR_IDCard.CVR_IDCard='17';
alert(CVR_IDCard.CVR_IDCard);

二、利用网页文档对象,进入框架中执行js代码(主要是Iframe)

n = 窗口_取句柄_模糊 (“营业厅 - 360安全浏览器 9.1”, “360se6_Frame”)
flag = 填表.初始化 (n)

2018年5月9日 | 发布:admin | 分类:学习笔记 | 评论:0

关于解决DevExpress用DevExpress patch工具破解后经常弹出试用框的问题

 

很多人使用devexpress patch这个破解工具,破解完后编译程序的时候经常会弹出使用窗口的,出现这个原因是license.licx这个控件凭证文件导致的,一般破解完后新建的项目不会出现这个问题,未破解前的项目就会出现这问题。


2018年5月2日 | 发布:admin | 分类:学习笔记 | 评论:0