• HtmlAgilityPack.dll的使用 获取HTMLid


    简介

    本文介绍net处理html页面元素的工具类(HtmlAgilityPack.dll)的使用,用途比较多的应该是例如采集类的功能,采集到的html字符串要怎样处理是一个头痛的问题,如果是截取就太麻烦了而且容易出错。所有就用到本文的第三方dll来处理了。

     

    下载

    下载地址:http://htmlagilitypack.codeplex.com/

    点击“download”按钮直接下载。

     

    使用

    1.添加HtmlAgilityPack.dll引用(引用类using HtmlAgilityPack;)。

    2.简单根据html中input的id获取value代码如下:

    复制代码
    // 模拟用户请求
    WebClient webClient = new WebClient();
    webClient.Encoding = System.Text.Encoding.UTF8;
    string htmlContext = webClient.DownloadString("http://stone_w.cnblogs.com/");
    webClient.Credentials = CredentialCache.DefaultCredentials; // 添加授权证书
    webClient.Headers.Add("User-Agent", "Microsoft Internet Explorer");
    webClient.Headers.Add("Host", "www.cnblogs.com");
    
    // 获取html元素(htmlContext为html页面字符串)
    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml(htmlContext);  // 加载html页面
    HtmlNode navNode = htmlDoc.GetElementbyId("id名称");
    Response.Write(navNode.Attributes["value"].Value);
    复制代码

     

    总结

    HtmlAgilityPack可以根据id查询value,还可以获取单个元素节点,都是HtmlDocument类的内置方法,大家可以试着练。谢谢完~

    获取超级链接

    HtmlWeb webClient = new HtmlWeb();
    HtmlDocument doc = webClient.Load("http://xxx");
    
    HtmlNodeCollection hrefList = doc.DocumentNode.SelectNodes(".//a[@href]");
    
    if (hrefList != null)
    {
         foreach (HtmlNode href in hrefList)
         {
            HtmlAttribute att = href.Attributes["href"];
            doSomething(att.Value);
    
         }
    
    }

    搜集到的第三个 

    这里推荐一个不错的DLL 叫HtmlAgilityPack.dll,它不基于mshtml,轻松解析HTML代码,这对做采集软件来说是很不错的选择,使用非常简单:


    --------------------------------------------------------------------------------

         Dim wc As WebClient = New WebClient
                Dim ms As MemoryStream = New MemoryStream(wc.DownloadData(url))
                '预读HTML
                Dim hdoc As HtmlDocument = New HtmlDocument
                hdoc.Load(ms, Encoding.UTF8)

                '股票编号
                arr(0) = hdoc.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[1]").InnerText 


    --------------------------------------------------------------------------------


    其中 /html[1]/body[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[1] 是你要采集的xPath,这个有点像DOMhtml,HtmlAgilityPack 也提供了相应的工具软件来获取这个值,但似乎开发者似乎不怎么了解winform,软件容易崩溃...

  • 相关阅读:
    PHPStorm 支持 Element UI 语法提示
    npm
    谷歌浏览器插件
    RBAC
    git 知识点
    Laradock ppa加速
    vscode插件
    临时解决执行 Composer Install 返回 Killed 的问题
    单例设计模式(3种实现方式)
    log4j.properties 详解与配置步骤
  • 原文地址:https://www.cnblogs.com/wangchuang/p/3566234.html
Copyright © 2020-2023  润新知