91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c#如何爬取優酷電影信息

發布時間:2021-02-26 13:01:27 來源:億速云 閱讀:171 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關c#如何爬取優酷電影信息,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

爬蟲步驟

  • 加載頁面

  • 解析數據

  • 保存數據

繼第一篇文檔后的爬蟲進階,本文章主要是對上一篇的進階。實現的功能主要為:
1、爬取電影類別列表
2、循環每個類別的電影信息,對每個類別的信息分頁爬取
3、爬取的數據保存到數據庫中

一、爬取電影類別列表

c#如何爬取優酷電影信息

使用Chrome瀏覽器,F12,找到當前位置,得到當前位置的Xpath。我們需要的數據是電影的類別編碼和電影類別名稱。

規則分析:
XPATH路徑為 "//*[@id='filterPanel']/div/ul/li/a")
類別編碼為A標簽Href路徑的內容,我們對其進行截取
類別名稱為A標簽InnerTest,我們對其進行截取

代碼示例

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

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

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

   //類別列表中去掉【全部】這個選項
   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;
  }

二、爬取每個類別的總分頁數

code 為電影類別編碼
頁面規則 $"http://list.youku.com/category/show/[code].html"
根據頁面規則進行爬取:

  /// <summary>
  ///  得到當前類別的總頁數
  /// </summary>
  public static int GetPageCountByCode(string code)
  {
   var web = new HtmlWeb();
   var doc = web.Load($"http://list.youku.com/category/show/[code].html");

   //分頁列表
   var pageList = doc.DocumentNode.CssSelect(".yk-pages li").ToList();
   //得到倒數第二項
   var lastsecond = pageList[pageList.Count - 2];
   return Convert.ToInt32(lastsecond.InnerText);
  }

三、按照頁碼得到每個電影類別的內容

根據分頁規則分析出分頁后的地址為
code 為編碼 pageIndex為第幾頁
頁面規則:http://list.youku.com/category/show/[code]s_1_d_1_p{pageIndex}.html
根據頁面規則進行爬取:

 /// <summary>
  ///  得到當前類別的內容
  /// </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;
  }

四、測試爬取的結果

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

   Console.WriteLine($"總個數為{count}");
  }

關于“c#如何爬取優酷電影信息”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

容城县| 台中县| 河池市| 平乡县| 平山县| 郎溪县| 乌审旗| 曲水县| 玉林市| 故城县| 湘阴县| 札达县| 宁波市| 广汉市| 辉南县| 阜宁县| 瑞安市| 德格县| 淳化县| 丽江市| 奎屯市| 浪卡子县| 禄劝| 密山市| 克什克腾旗| 太保市| 宜都市| 松阳县| 元氏县| 眉山市| 牡丹江市| 汉中市| 从化市| 濮阳市| 泰来县| 翼城县| 治多县| 南澳县| 达尔| 常山县| 加查县|