HtmlAgilityPack應(yīng)該算是.Net下最好用的html解析庫了。

          ?

          因為最近幫朋友采集一些數(shù)據(jù),在nuget里面搜索了好幾個庫,最后決定就用HtmlAgilityPack。并簡單的記錄下使用的姿勢。

          直接使用nuget包安裝
          Install-Package HtmlAgilityPack -Version 1.11.16
          ?

          1.下載網(wǎng)頁

          該庫提供了一個下載網(wǎng)頁的類:HtmlWeb
          var webGet = new HtmlWeb(); var document = webGet.Load(url);
          如果網(wǎng)絡(luò)正常的話,就會拿到一個HtmlDocument的對象。后面我們所有的操作都是基于該類做的。


          我個人更喜歡使用HttpClient來下載網(wǎng)頁,然后使用HtmlDocument來LoadHtml。因為自己使用HTMLClient可控性更高。比如要加代理IP,隨機設(shè)置UA等操作。

          當(dāng)然簡單的使用,使用HtmlWeb就差不多了。

          2.解析網(wǎng)頁

          第一步拿到的htmlDocument對象,里面提供了很多操作。



          ?

          舉個栗子,比如我們要獲取網(wǎng)頁的文章的作者,直接在Chrome中右鍵->審查元素->elements->右鍵->Copy->Copy Xpath
          document.DocumentNode.SelectSingleNode("Chrome復(fù)制的xpath")?.InnerText
          然后就成功采集到了作者名字

          如何解析列表?

          用博客園舉栗子,首頁就是一個列表文章頁。我們?nèi)绾潍@取到這個列表所有的項呢?
          var nodes = document.DocumentNode.SelectNodes("xpath表達式")
          如果熟悉xpath的老哥們就知道使用雙斜杠開頭的,就可以獲取到多項節(jié)點的結(jié)果。比如博客園的表達式為:
          //div[@class='post_item'],然后獲取到HtmlDocument的一個集合,再解析集合的子節(jié)點,就行了!

          如何刪除標(biāo)簽?

          有些文章中,會隱藏a標(biāo)簽來給批量采集的人下毒。

          可以直接使用Descendants方法找到所有的a標(biāo)簽,然后刪除
          var aNodes = 獲取到的HtmlDocument對象.DocumentNode.Descendants("a") foreach (var
          anodein aNodes.ToArray()) { anode.Remove(); }
          ?

          如果要采集圖片呢?

          一般圖片地址放在img的src屬性上,
          var imgNodes = detail.DocumentNode.Descendants("img"); foreach (var img in
          imgNodes) {string imgurl = img.GetAttributeValue("src",""); }
          獲取到地址,就可以使用HTTPClient來下載圖片并保存到文件夾中

          ?

          如何修改節(jié)點屬性?

          舉個栗子,如果我們把圖片上傳到我們的服務(wù)器,然后要在文章中替換掉別人的圖片地址,那應(yīng)該怎么做呢?
          var imgNodes = detail.DocumentNode.Descendants("img"); foreach (var img in
          imgNodes) { img.SetAttributeValue("src", "圖片地址"); }
          基本上,掌握這幾點,就能到處去采集別人的網(wǎng)站了。

          當(dāng)然HtmlAgilityPack的功能遠(yuǎn)遠(yuǎn)不止本文所描述的這些,更多的功能,可能需要有更深入的需求才會用到,

          有不懂或者需要交流的大佬們,可以加我的QQ:862640563 QQ群:545594312

          ?

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                7777网站 | 成人黄色在线观看 | 精品无码成人影院在线观看 | 搓光美女衣服羞羞漫画入口 | 男女做爰猛烈啪啪吃奶动床戏麻豆 |