最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# 爬取優(yōu)酷電影信息(2)

 更新時(shí)間:2021年02月26日 09:45:13   作者:三十三重天  
這篇文章主要介紹了c# 如何爬取優(yōu)酷電影信息,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下

上一章節(jié)中我們實(shí)現(xiàn)了對(duì)優(yōu)酷單頁(yè)面的爬取,簡(jiǎn)單進(jìn)行回顧一下,使用HtmlAgilityPack庫(kù),對(duì)爬蟲(chóng)的爬取一共分為三步

爬蟲(chóng)步驟

  • 加載頁(yè)面
  • 解析數(shù)據(jù)
  • 保存數(shù)據(jù)

繼第一篇文檔后的爬蟲(chóng)進(jìn)階,本文章主要是對(duì)上一篇的進(jìn)階。實(shí)現(xiàn)的功能主要為:
1、爬取電影類(lèi)別列表
2、循環(huán)每個(gè)類(lèi)別的電影信息,對(duì)每個(gè)類(lèi)別的信息分頁(yè)爬取
3、爬取的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中

一、爬取電影類(lèi)別列表

使用Chrome瀏覽器,F(xiàn)12,找到當(dāng)前位置,得到當(dāng)前位置的Xpath。我們需要的數(shù)據(jù)是電影的類(lèi)別編碼和電影類(lèi)別名稱(chēng)。

規(guī)則分析:
XPATH路徑為 "http://*[@id='filterPanel']/div/ul/li/a")
類(lèi)別編碼為A標(biāo)簽Href路徑的內(nèi)容,我們對(duì)其進(jìn)行截取
類(lèi)別名稱(chēng)為A標(biāo)簽InnerTest,我們對(duì)其進(jìn)行截取

代碼示例

  //加載web內(nèi)容
   private static readonly string _url = "http://list.youku.com/category/video/c_0.html";

  /// <summary>
  ///  得到所有的類(lèi)別
  /// </summary>
  public static List<VideoType> GetVideoTypes()
  {
   //加載web內(nèi)容
   var web = new HtmlWeb();
   var doc = web.Load(_url);

   //內(nèi)容解析-獲得所有的類(lèi)別
   var allTypes = doc.DocumentNode.SelectNodes("http://*[@id='filterPanel']/div/ul/li/a").ToList();

   //類(lèi)別列表中去掉【全部】這個(gè)選項(xiàng)
   var typeResults = allTypes.Where((u, i) => { return i > 0; }).ToList();

   var reList = new List<VideoType>();
   foreach (var node in typeResults)
   {
    var href = node.Attributes["href"].Value;
    reList.Add(new VideoType
    {
     Code = href.Substring(href.LastIndexOf("/") + 1, href.LastIndexOf(".") - href.LastIndexOf("/") - 1),
     Name = node.InnerText
    });
   }

   return reList;
  }

二、爬取每個(gè)類(lèi)別的總分頁(yè)數(shù)

code 為電影類(lèi)別編碼
頁(yè)面規(guī)則 $" 根據(jù)頁(yè)面規(guī)則進(jìn)行爬?。?/p>

三、按照頁(yè)碼得到每個(gè)電影類(lèi)別的內(nèi)容

根據(jù)分頁(yè)規(guī)則分析出分頁(yè)后的地址為
code 為編碼 pageIndex為第幾頁(yè)
頁(yè)面規(guī)則:http://list.youku.com/category/show/[code]s_1_d_1_p{pageIndex}.html
根據(jù)頁(yè)面規(guī)則進(jìn)行爬?。?/p>

 /// <summary>
  ///  得到當(dāng)前類(lèi)別的內(nèi)容
  /// </summary>
  public static List<VideoContent> GetContentsByCode(string code, int pageIndex)
  {
   var web = new HtmlWeb();
   var doc = web.Load($"http://list.youku.com/category/show/[code]_s_1_d_1_p_{pageIndex}.html");

   var returnLi = new List<VideoContent>();
   var contents = doc.DocumentNode.CssSelect(".yk-col4").ToList();

   foreach (var node in contents)
    returnLi.Add(new VideoContent
    {
     PageIndex = pageIndex.ToString(),
     Code = code,
     Title = node.CssSelect(".info-list .title a").FirstOrDefault()?.InnerText,
     Hits = node.CssSelect(".info-list li").LastOrDefault()?.InnerText,
     Href = node.CssSelect(".info-list .title a").FirstOrDefault()?.Attributes["href"].Value,
     ImgHref = node.CssSelect(".p-thumb img").FirstOrDefault()?.Attributes["Src"].Value
    });

   return returnLi;
  }

四、測(cè)試爬取的結(jié)果

  /// <summary>
  ///  打印得到的內(nèi)容
  /// </summary>
  public static void PrintContent()
  {
   var count = 0;
   foreach (var node in GetVideoTypes())
   {
    var resultLi = new List<VideoContent>();
    //得到當(dāng)前類(lèi)別總分頁(yè)數(shù)
    var pageCount = GetPageCountByCode(node.Code);
    //遍歷分頁(yè)得到內(nèi)容
    for (var i = 1; i <= pageCount; i++) resultLi.AddRange(GetContentsByCode(node.Code, i));
    Console.WriteLine($"編碼{node.Code} \t 頁(yè)數(shù){pageCount} \t 總個(gè)數(shù){resultLi.Count}");
    count += resultLi.Count;
   }

   Console.WriteLine($"總個(gè)數(shù)為{count}");
  }

代碼下載地址:

https://github.com/happlyfox/FoxCrawler/tree/master/%E5%AD%A6%E4%B9%A0%E7%A4%BA%E4%BE%8B/YouKuCrawler/YouKuCrawlerAsync

以上就是c# 爬取優(yōu)酷電影信息(2)的詳細(xì)內(nèi)容,更多關(guān)于c# 爬取優(yōu)酷電影信息的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#使用帶like的sql語(yǔ)句時(shí)防sql注入的方法

    C#使用帶like的sql語(yǔ)句時(shí)防sql注入的方法

    這篇文章主要介紹了C#使用帶like的sql語(yǔ)句時(shí)防sql注入的方法,采用了一個(gè)比較簡(jiǎn)單的字符串過(guò)濾方法就可以有效提高sql語(yǔ)句的安全性,防止sql注入,需要的朋友可以參考下
    2014-09-09
  • C#中抽象方法與虛擬方法的區(qū)別

    C#中抽象方法與虛擬方法的區(qū)別

    這篇文章主要介紹了C#中抽象方法與虛擬方法的區(qū)別,對(duì)于C#初學(xué)者來(lái)說(shuō)可以深入理解抽象方法與虛擬方法,需要的朋友可以參考下
    2014-08-08
  • C#中添加窗口的步驟詳解

    C#中添加窗口的步驟詳解

    下面小編就為大家?guī)?lái)一篇C#中添加窗口的步驟詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • c#中switch case的用法實(shí)例解析

    c#中switch case的用法實(shí)例解析

    這篇文章主要介紹了c#中switch case的用法實(shí)例解析,對(duì)于C#的初學(xué)者來(lái)說(shuō)有必要熟練掌握,需要的朋友可以參考下
    2014-08-08
  • C#實(shí)現(xiàn)金額轉(zhuǎn)換成中文大寫(xiě)金額

    C#實(shí)現(xiàn)金額轉(zhuǎn)換成中文大寫(xiě)金額

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)金額轉(zhuǎn)換成中文大寫(xiě)金額,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • C#結(jié)合JavaScript對(duì)Web控件進(jìn)行數(shù)據(jù)輸入驗(yàn)證的實(shí)現(xiàn)方法

    C#結(jié)合JavaScript對(duì)Web控件進(jìn)行數(shù)據(jù)輸入驗(yàn)證的實(shí)現(xiàn)方法

    在 Web 應(yīng)用的錄入界面,數(shù)據(jù)驗(yàn)證是一項(xiàng)重要的實(shí)現(xiàn)功能,數(shù)據(jù)驗(yàn)證是指確認(rèn) Web 控件輸入或選擇的數(shù)據(jù),本文我們將介紹如何通過(guò)C# 后端及JavaScript 前端對(duì) Web 控件進(jìn)行數(shù)據(jù)輸入有效性的驗(yàn)證,感興趣的朋友可以參考一下
    2024-05-05
  • C#遞歸讀取XML菜單數(shù)據(jù)的方法

    C#遞歸讀取XML菜單數(shù)據(jù)的方法

    這篇文章主要介紹了C#遞歸讀取XML菜單數(shù)據(jù)的方法,涉及遞歸的操作技巧與C#窗體的用法,對(duì)于進(jìn)行C#項(xiàng)目開(kāi)發(fā)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • C#中Predicate<T>與Func<T, bool>泛型委托的用法實(shí)例

    C#中Predicate<T>與Func<T, bool>泛型委托的用法實(shí)例

    這篇文章主要介紹了C#中Predicate<T>與Func<T, bool>泛型委托的用法,指出了其用法中的誤區(qū)及易錯(cuò)點(diǎn),有助于更好的理解泛型委托的用法,需要的朋友可以參考下
    2014-09-09
  • 使用遞歸算法求第30位數(shù)的值

    使用遞歸算法求第30位數(shù)的值

    這篇文章主要介紹了使用遞歸求第30位數(shù)的值,需要的朋友可以參考下
    2014-02-02
  • C#中DataGridView操作技巧

    C#中DataGridView操作技巧

    這篇文章主要介紹了C#中DataGridView操作技巧,包括了DataGridView的初始化、添加行、添加列、排序等操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12

最新評(píng)論

全州县| 临武县| 图木舒克市| 沙湾县| 徐汇区| 广河县| 麻阳| 栖霞市| 曲阳县| 云梦县| 洛浦县| 文成县| 格尔木市| 曲阜市| 读书| 东丰县| 济南市| 隆昌县| SHOW| 永康市| 永兴县| 北安市| 章丘市| 友谊县| 全椒县| 建湖县| 北票市| 南陵县| 南安市| 迭部县| 鹿邑县| 获嘉县| 绍兴市| 镇雄县| 沅江市| 余干县| 东至县| 祥云县| 天门市| 桦川县| 荥经县|