<rp id="kut09"><nav id="kut09"></nav></rp>
<rp id="kut09"></rp>
  • <tt id="kut09"></tt>
    <tt id="kut09"><tbody id="kut09"></tbody></tt>
    1. <u id="kut09"></u>
    2. <tt id="kut09"><noscript id="kut09"></noscript></tt>
    3. 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# 爬蟲的資料請關注腳本之家其它相關文章!

      相關文章

      最新評論

      218彩票 www.laopinionxyz.com:敦化市| www.concordbeats.com:怀安县| www.92dingyue.com:镇沅| www.jp-daigo.com:镶黄旗| www.cleanhouselimpeza.com:吉隆县| www.jeanpellissier.com:富民县| www.swaggjewels.com:栾川县| www.hg19678.com:中山市| www.bq339.com:怀宁县| www.983mu.com:通许县| www.cskxd.com:塔城市| www.bin-heart.com:钟祥市| www.pengdaclothing.com:社会| www.wzxj888.com:吴江市| www.spiritspace.net:老河口市| www.xlpww.cn:泸西县| www.chinatourphoto.com:平定县| www.clubxshow.com:开远市| www.busongqi.com:旅游| www.chcdistribution.com:崇文区| www.pj88853.com:德兴市| www.shaileshsinha.com:景谷| www.ah-zszs.com:绥中县| www.jhkangtai.com:扎鲁特旗| www.cccmlogistics.com:遂平县| www.xpj88658.com:峡江县| www.yuanrongxing.com:乐至县| www.apartment-gdansk.com:云龙县| www.acseconference.com:房产| www.eyecandyunlimited.com:尖扎县| www.adjian.com:郧西县| www.xinda-zq.com:东港市| www.laopinionxyz.com:乡城县| www.wentiangouwu.com:海兴县| www.lakestreettrading.com:新营市| www.jonandlaurenwedding.com:商丘市| www.elitetrainingca.com:班玛县| www.cooperspeed.com:怀柔区| www.onlinefloraldesign.org:海伦市| www.ixiaoo.com:沧州市| www.dawdev.com:盐山县| www.sunmastering.com:宁晋县| www.patenaude-trempe.com:浑源县| www.nanopowerindia.com:古交市| www.uniquemicrofinance.com:右玉县| www.ymt-tea.com:司法| www.yourlifebar.com:泸定县| www.airotours.com:汪清县| www.983mu.com:贞丰县| www.h20proof.com:左云县| www.gratefulsparrow.com:府谷县| www.2muchfat.com:临猗县| www.brgbf.com:广元市| www.rcybgg.com:南和县| www.teksasbahis.com:秦安县| www.qywdj.com:呼伦贝尔市| www.stlcardsnstuff.com:桂东县| www.camiladrozd.com:合山市| www.yuanquanfeiye.com:海兴县| www.easterlingtribe.com:武夷山市| www.jackherbflorist.com:会东县| www.lianyunlipin.com:吴旗县| www.hsmyy.com:易门县| www.originalcachemire.com:元江| www.shoe-top.com:安宁市| www.quangvinhexpress.com:林芝县| www.xlcoms.com:漳平市| www.cheabc168.com:华安县| www.galbia.com:盘锦市| www.cox2go.com:九龙城区| www.99069vv.com:三穗县| www.fmars2007.org:宝应县| www.qm-cz.com:舞阳县| www.mb775.com:葵青区| www.groupe-avram.com:益阳市| www.nbphq.cn:徐闻县| www.maltavizesi.net:临夏县| www.lumicphoto.com:扎赉特旗| www.m2676.com:宁阳县| www.jinshayule53.com:贵州省| www.ebwww.com:岑巩县| www.fuwudai.com:封开县| www.open82.com:洪泽县| www.myliferec.com:滦南县|