<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.gdgypvc.com:九寨沟县| www.j0662.com:西安市| www.preciosmadrid.com:九台市| www.beautyincarnate.com:修水县| www.techidana.com:上高县| www.663074.com:乡宁县| www.nation-wide-building.com:阜新市| www.kmtyaf.com:稻城县| www.hg94678.com:建湖县| www.xchongqing.com:琼结县| www.sdstones.com:长乐市| www.robingrace-artist.com:宿州市| www.jdmdw.com:普定县| www.fdcyxw.com:司法| www.tjdongtai.com:浏阳市| www.viralinsocialmedia.com:宁蒗| www.agenciaaccords.com:合川市| www.uggaugga.com:林周县| www.bmwbursa.com:于田县| www.slrhfoundation.org:兴安盟| www.yiqitt.com:诸暨市| www.tridentmed.org:濮阳县| www.nicolasbessol.com:乃东县| www.shrool.com:班玛县| www.manganetabarespoiler.com:保定市| www.guanglistone.com:咸阳市| www.biosourcepharm.com:桂平市| www.obatviagraasli.com:吉林省| www.mmnnb.com:桐梓县| www.flamwoodvideo.com:东兰县| www.accountingspecialist.net:文昌市| www.qslqsl.com:苏尼特右旗| www.rphstc.com:禄丰县| www.jnddq.com:策勒县| www.chungcuhanoimoi.net:泗水县| www.mq633.com:乐至县| www.v6g4d.com:米脂县| www.johnmarquisford.com:德州市| www.maluna-lighting.com:六枝特区| www.bleach-toysoldier.com:海城市| www.jxhysd.com:石城县| www.louisgh.com:安乡县| www.emlakdukkaniist.com:蒙自县| www.dessertsstraightup.com:耿马| www.vuaxedien.com:临泽县| www.obatviagraasli.com:丽江市| www.songzhixiang.com:会东县| www.fusheng1bet.com:临武县| www.zibohonglu.com:夏津县| www.wm-176.com:兴安盟| www.jinsuitools.com:大宁县| www.ptlpw.cn:云南省| www.917wm.com:和顺县| www.xiexiaosuan.com:工布江达县| www.cp5581.com:新野县| www.4008557888.com:家居| www.hdbondagesex.com:临颍县| www.r7767.com:甘洛县| www.daogou001.com:乐东| www.horseflyblog.com:准格尔旗| www.jyodhisham.com:自贡市| www.doedoehuis.com:德令哈市| www.petsupplydistributor.com:固始县| www.shishibo4646.com:理塘县| www.hzqbsjz.com:古交市| www.labodaderafaypaula.com:迁安市| www.hithazaramovie.com:通州区| www.tearway.com:四会市| www.affiliatemarketingbest.com:南郑县| www.cf667.com:池州市| www.amde-in-china.com:伊春市| www.phototuredesigns.com:禄劝| www.rs338.com:北宁市| www.91dudou.com:阳春市| www.xinya-painting.com:延庆县| www.fo-sante.com:瑞安市| www.cp3676.com:浦城县| www.lapakpoker.org:台山市| www.nordea-im.com:舟曲县| www.820048.com:巴林右旗| www.chessul.com:博爱县| www.theballoonmarket.com:安岳县| www.dlm-music.com:广东省| www.mfcsj.com:东宁县|