<font id="nc9yk"></font>
  • <tt id="nc9yk"></tt>
          <rp id="nc9yk"><optgroup id="nc9yk"></optgroup></rp>
          <tt id="nc9yk"><form id="nc9yk"></form></tt>

            <cite id="nc9yk"></cite>

            C# 爬蟲簡單教程

             更新時間:2020年12月29日 14:37:48   作者:張缺缺  
            這篇文章主要介紹了C# 爬蟲的簡單教程,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

            1、使用第三方類庫 HtmlAgilityPack

            官方網址:https://html-agility-pack.net/?z=codeplex

            // From File 從文件獲取html信息
            var doc = new HtmlDocument();
            doc.Load(filePath);
            
            // From String 從字符串獲取html信息
            var doc = new HtmlDocument();
            doc.LoadHtml(html);
            
            // From Web  從網址獲取html信息
            var url = "http://html-agility-pack.net/";
            var web = new HtmlWeb();
            var doc = web.Load(url);

            1.1、這里介紹一下最后一種用法

            var web = new HtmlWeb();
            var doc = web.Load(url);

            在 web 中我們還可以設置cookie、headers等信息,來處理一些特定的網站需求,比如需要登陸等。

            1.2 用法解釋

            網頁在你查看網頁源代碼之后只是一段字符串,而爬蟲所做的就是在這堆字符串中,查詢到我們想要的信息,挑選出來。
            以往的篩選方法:正則 (太麻煩了,寫起來有些頭疼)
            HtmlAgilityPack 支持通過XPath來解析我們需要的信息。

            1.2.1 在哪里找XPath?

            網頁右鍵檢查

            通過XPath就可以準確獲取你想要元素的全部信息。

            1.2.2 獲取選中Html元素的信息?

            獲取選中元素

            var web = new HtmlWeb();
            var doc = web.Load(url);
            var htmlnode = doc?.DocumentNode?.SelectSingleNode("/html/body/header")

            獲取元素信息

            htmlnode.InnerText;
            htmlnode.InnerHtml;
            //根據屬性取值
            htmlnode?.GetAttributeValue("src", "未找到")

            2、自己封裝的類庫

             /// <summary>
              /// 下載HTML幫助類
              /// </summary>
              public static class LoadHtmlHelper
              {
                /// <summary>
                /// 從Url地址下載頁面
                /// </summary>
                /// <param name="url"></param>
                /// <returns></returns>
                public async static ValueTask<HtmlDocument> LoadHtmlFromUrlAsync(string url)
                {
                  HtmlWeb web = new HtmlWeb();
                   return await
                     web?.LoadFromWebAsync(url);
                }
            
                /// <summary>
                /// 獲取單個節點擴展方法
                /// </summary>
                /// <param name="htmlDocument">文檔對象</param>
                /// <param name="xPath">xPath路徑</param>
                /// <returns></returns>
                public static HtmlNode GetSingleNode(this HtmlDocument htmlDocument, string xPath)
                {
                 return htmlDocument?.DocumentNode?.SelectSingleNode(xPath);
                }
            
                /// <summary>
                /// 獲取多個節點擴展方法
                /// </summary>
                /// <param name="htmlDocument">文檔對象</param>
                /// <param name="xPath">xPath路徑</param>
                /// <returns></returns>
                public static HtmlNodeCollection GetNodes(this HtmlDocument htmlDocument, string xPath)
                {
                  return htmlDocument?.DocumentNode?.SelectNodes(xPath);
                }
            
               
            
                /// <summary>
                /// 獲取多個節點擴展方法
                /// </summary>
                /// <param name="htmlDocument">文檔對象</param>
                /// <param name="xPath">xPath路徑</param>
                /// <returns></returns>
                public static HtmlNodeCollection GetNodes(this HtmlNode htmlNode, string xPath)
                {
                  return htmlNode?.SelectNodes(xPath);
                }
            
            
                /// <summary>
                /// 獲取單個節點擴展方法
                /// </summary>
                /// <param name="htmlDocument">文檔對象</param>
                /// <param name="xPath">xPath路徑</param>
                /// <returns></returns>
                public static HtmlNode GetSingleNode(this HtmlNode htmlNode, string xPath)
                {
                  return htmlNode?.SelectSingleNode(xPath);
                }
            
                /// <summary>
                /// 下載圖片
                /// </summary>
                /// <param name="url">地址</param>
                /// <param name="filpath">文件路徑</param>
                /// <returns></returns>
                public async static ValueTask<bool> DownloadImg(string url ,string filpath)
                {
                  HttpClient httpClient = new HttpClient();
                  try
                  {
                    var bytes = await httpClient.GetByteArrayAsync(url);
                    using (FileStream fs = File.Create(filpath))
                    {
                      fs.Write(bytes, 0, bytes.Length);
                    }
                    return File.Exists(filpath);
                  }
                  catch (Exception ex)
                  {
                   
                    throw new Exception("下載圖片異常", ex);
                  }
                  
                }
              }

            3、自己寫的爬蟲案例,爬取的網站https://www.meitu131.com/

            數據存儲層沒有實現,懶得寫了,靠你們嘍,我是數據暫時存在了文件中
            GitHub地址:https://github.com/ZhangQueque/quewaner.Crawler.git

            以上就是C# 爬蟲簡單教程的詳細內容,更多關于c# 爬蟲的資料請關注腳本之家其它相關文章!

            相關文章

            最新評論

            hao500彩票 www.sproutstudio.net:九台市| www.tuestate.com:昌江| www.anhkhieudam.com:郓城县| www.uniquemicrofinance.com:洱源县| www.023chbg.com:保山市| www.rrrsz.com:微山县| www.pure-gen.com:津南区| www.www834suncity.com:邻水| www.thesokolcompany.com:衡水市| www.0898sport.com:云梦县| www.lan-tour.com:武川县| www.jingmeihb.com:衡东县| www.ukvapez.com:施甸县| www.ibew413benefits.com:资讯| www.dlzhutan.com:临潭县| www.blackspaceidp.com:邯郸市| www.g9892.com:额敏县| www.yushan-li.com:娱乐| www.oranjebastion.org:九龙城区| www.changsha8.com:大荔县| www.kebumenkeren.com:宝鸡市| www.stevebayer.com:德化县| www.yxnxs.com:大庆市| www.shopthapcam.com:凤山市| www.davidroemerphotography.com:安国市| www.santiagopalacios.com:西乡县| www.thejoyryders.com:许昌县| www.msliver.com:洛扎县| www.v9176.com:五常市| www.opomart.com:福清市| www.discussfood.com:大邑县| www.concordbeats.com:盐池县| www.bostonsalist.com:霸州市| www.f6557.com:绩溪县| www.xgonl.com:大新县| www.avtomationline.net:芦山县| www.cuidighlinn.com:上林县| www.sallytarr.com:西畴县| www.beldonseattle.com:元谋县| www.baliemvalley.com:望谟县| www.sun-automation.com:台南市| www.gfcf14greendream.com:新晃| www.v88v99.com:临沧市| www.0527tm.com:丰城市| www.6565g.com:南京市| www.globalnj.com:临猗县| www.5566zy.com:嘉峪关市| www.free0769.com:丽江市| www.cp7665.com:大洼县| www.vennaresidence.com:鄂尔多斯市| www.906765.com:大英县| www.phoneitipad.com:高雄市| www.safehavenproj.org:高邮市| www.casadelillian.com:开封市| www.mwhhs.com:红河县| www.tiekekaiguan.com:嘉荫县| www.chengbag.com:老河口市| www.coutdev.com:兴文县| www.ssf12.com:南阳市| www.brgbf.com:安泽县| www.cp8559.com:晋城| www.viralinsocialmedia.com:阿拉善右旗| www.tkozelibitimilijunas.com:新余市| www.ezkertza.com:涟水县| www.wazww.com:社会| www.3883pj.com:农安县| www.biji-rumput.com:富平县| www.dwgmax.com:余干县| www.01qiuxiady.com:响水县| www.bishuikuai.com:鹤庆县| www.itsagreed.com:长子县| www.gw336.com:延津县| www.cedarcoverentals.com:喀喇| www.gsjrm.cn:陇西县| www.battleison.com:连云港市| www.nj-tyjx.com:信丰县| www.gaindealsspot.com:柞水县| www.koreanista.net:云龙县| www.boshichiji.com:永年县| www.beroaf.com:米泉市| www.micheray.com:西城区| www.uu-i.com:当阳市| www.wwwhg5717.com:嘉祥县| www.giggiblu.com:林芝县|