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

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

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

爬蟲的制作主要分為三個(gè)方面
1、加載網(wǎng)頁(yè)結(jié)構(gòu)
2、解析網(wǎng)頁(yè)結(jié)構(gòu),轉(zhuǎn)變?yōu)榉闲枨蟮臄?shù)據(jù)實(shí)體
3、保存數(shù)據(jù)實(shí)體(數(shù)據(jù)庫(kù),文本等)

在實(shí)際的編碼過(guò)程中,找到了一個(gè)好的類庫(kù)“HtmlAgilityPack”。
介紹:
官網(wǎng):http://html-agility-pack.net/?z=codeplex
Html Agility Pack源碼中的類大概有28個(gè)左右,其實(shí)不算一個(gè)很復(fù)雜的類庫(kù),但它的功能確不弱,為解析DOM已經(jīng)提供了足夠強(qiáng)大的功能支持,可以跟jQuery操作DOM媲美)
使用說(shuō)明:
Html Agility Pack(XPath 定位),在實(shí)際使用過(guò)程中,發(fā)現(xiàn)有部分內(nèi)容如果通過(guò)Css進(jìn)行定位會(huì)比XPath更加方便,所以通過(guò)查找找到了另外一個(gè)CSS的解析了類庫(kù) ScrapySharp(Css 定位)

整理:
Nuget包需要引用的庫(kù)
1、Html Agility Pack(XPath 定位)
2、ScrapySharp(Css 定位)

代碼下載地址:

https://github.com/happlyfox/FoxCrawler

第一點(diǎn)——加載網(wǎng)頁(yè)結(jié)構(gòu)

Html Agility Pack封裝了加載內(nèi)容的方法,使doc.Load(arguments),具有多種重載方式,以下列舉官網(wǎng)的三個(gè)實(shí)例

 /// <summary>
 /// 加載網(wǎng)頁(yè)結(jié)構(gòu)
 /// </summary>
 private static void LoadDocment()
 {
  // 從文件中加載
  var docFile = new HtmlDocument();
  docFile.Load("file path");

  // 從字符串中加載
  var docHtml = new HtmlDocument();
  docHtml.LoadHtml("html");

  // 從網(wǎng)站中加載
  var url = "http://html-agility-pack.net/";
  var web = new HtmlWeb();
  var docWeb = web.Load(url);
 }

第二點(diǎn)——解析網(wǎng)頁(yè)結(jié)構(gòu),轉(zhuǎn)變?yōu)榉闲枨蟮臄?shù)據(jù)實(shí)體

 /// <summary>
 /// 解析網(wǎng)頁(yè)結(jié)構(gòu)
 /// </summary>
 private static YouKu ParsingWebStructure()
 {
 /*選用優(yōu)酷片庫(kù)列表
  地址:http://list.youku.com/category/show/c_96_s_1_d_1_p_{index}.html 
 */

 //首先加載web內(nèi)容
 var url = "http://list.youku.com/category/show/c_96_s_1_d_1_p_1.html";
 var web = new HtmlWeb();
 var doc = web.Load(url);

 //輸出WebHtml內(nèi)容
 //Console.WriteLine(doc.DocumentNode.InnerHtml);

 /* HtmlAgilityPack 解析方式官網(wǎng)提供的有倆種示例*/
 //1、 With XPath	
 var value = doc.DocumentNode.SelectSingleNode("http://*[@id='total_videonum']").Attributes["id"].Value;
 var resultCount = doc.DocumentNode.SelectSingleNode("http://*[@id='total_videonum']").InnerText;

 Console.WriteLine($"id='{value}' 篩選結(jié)果:{resultCount}個(gè)");
 // 2、With LINQ	
 var linqNodes = doc.DocumentNode.SelectSingleNode("http://*[@id='filterPanel']/div[2]/ul").Descendants("li").ToList();

 Console.WriteLine("電影產(chǎn)地:");
 List<string> videoCountry = new List<string>();
 foreach (var node in linqNodes)
 {
  videoCountry.Add(node.InnerText);
  Console.Write($"{node.InnerText} \t");
 }

 //3、使用ScrapySharp進(jìn)行Css定位
 var cssNodes = doc.DocumentNode.CssSelect("#filterPanel > div > label");
 Console.WriteLine();

 List<string> videoType = new List<string>();
 foreach (var node in cssNodes)
 {
  videoType.Add(node.InnerText);
  Console.Write($"{node.InnerText} \t");
 }

 //構(gòu)造實(shí)體
 YouKu model = new YouKu()
 {
  id = value,
  videoNum = int.Parse(resultCount),
  videoCountry = videoCountry,
  videoType = videoType
 };

 return model;
 }


public class YouKu
{
 public string id { get; set; }

 public int videoNum { get; set; }

 public List<string> videoCountry { get; set; }
 public List<string> videoType { get; set; }
}

第三點(diǎn)——保存數(shù)據(jù)實(shí)體,轉(zhuǎn)變?yōu)榉闲枨蟮臄?shù)據(jù)實(shí)體

 /// <summary>
 /// 保存數(shù)據(jù)實(shí)體
 /// </summary>
 private static void SavaData()
 {
 var model = ParsingWebStructure();
 var path = "youku.txt";

 if (!File.Exists(path))
 {
  File.Create(path);
 }

 File.WriteAllText(path, getJsonByObject(model));
 }

 private static string getJsonByObject(Object obj)
 {
 //實(shí)例化DataContractJsonSerializer對(duì)象,需要待序列化的對(duì)象類型
 DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
 //實(shí)例化一個(gè)內(nèi)存流,用于存放序列化后的數(shù)據(jù)
 MemoryStream stream = new MemoryStream();
 //使用WriteObject序列化對(duì)象
 serializer.WriteObject(stream, obj);
 //寫入內(nèi)存流中
 byte[] dataBytes = new byte[stream.Length];
 stream.Position = 0;
 stream.Read(dataBytes, 0, (int)stream.Length);
 //通過(guò)UTF8格式轉(zhuǎn)換為字符串
 return Encoding.UTF8.GetString(dataBytes);
 }

第四點(diǎn)——main

 static void Main(string[] args)
 {
 ///爬蟲的制作主要分為三個(gè)方面
 ///1、加載網(wǎng)頁(yè)結(jié)構(gòu)
 ///2、解析網(wǎng)頁(yè)結(jié)構(gòu),轉(zhuǎn)變?yōu)榉闲枨蟮臄?shù)據(jù)實(shí)體
 ///3、保存數(shù)據(jù)實(shí)體(數(shù)據(jù)庫(kù),文本等)


 /*
  * 在實(shí)際的編碼過(guò)程中,找到了一個(gè)好的類庫(kù)“HtmlAgilityPack”。
  * 介紹:
  * 官網(wǎng):http://html-agility-pack.net/?z=codeplex
  * Html Agility Pack源碼中的類大概有28個(gè)左右,其實(shí)不算一個(gè)很復(fù)雜的類庫(kù),但它的功能確不弱,為解析DOM已經(jīng)提供了足夠強(qiáng)大的功能支持,可以跟jQuery操作DOM媲美)
  * 使用說(shuō)明:
  * Html Agility Pack(XPath 定位),在實(shí)際使用過(guò)程中,發(fā)現(xiàn)有部分內(nèi)容如果通過(guò)Css進(jìn)行定位會(huì)比XPath更加方便,所以通過(guò)查找找到了另外一個(gè)CSS的解析了類庫(kù) ScrapySharp(Css 定位)
  * 整理:
  * Nuget包需要引用的庫(kù)
  * 1、Html Agility Pack(XPath 定位)
  * 2、ScrapySharp(Css 定位)
  */


 //第一點(diǎn)——加載網(wǎng)頁(yè)結(jié)構(gòu),Html Agility Pack封裝了加載內(nèi)容的方法,使用doc.Load(arguments),具有多種重載方式,以下列舉官網(wǎng)的三個(gè)實(shí)例
 //LoadDocment();

 //第二點(diǎn)——解析網(wǎng)頁(yè)結(jié)構(gòu),轉(zhuǎn)變?yōu)榉闲枨蟮臄?shù)據(jù)實(shí)體
 //ParsingWebStructure();

 //第三點(diǎn)——保存數(shù)據(jù)實(shí)體,轉(zhuǎn)變?yōu)榉闲枨蟮臄?shù)據(jù)實(shí)體
 SavaData();
 Console.Read();
 }

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

相關(guān)文章

  • C#設(shè)計(jì)模式之Visitor訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題實(shí)例

    C#設(shè)計(jì)模式之Visitor訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題實(shí)例

    這篇文章主要介紹了C#設(shè)計(jì)模式之Visitor訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題,簡(jiǎn)單描述了訪問(wèn)者模式的定義并結(jié)合具體實(shí)例形式分析了C#使用訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • C#獲取打印機(jī)列表方法介紹

    C#獲取打印機(jī)列表方法介紹

    這篇文章介紹了C#獲取打印機(jī)列表的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • C#算法之羅馬數(shù)字轉(zhuǎn)整數(shù)

    C#算法之羅馬數(shù)字轉(zhuǎn)整數(shù)

    本文詳細(xì)講解了C#算法之羅馬數(shù)字轉(zhuǎn)整數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • C#實(shí)現(xiàn)泛型List分組輸出元素的方法

    C#實(shí)現(xiàn)泛型List分組輸出元素的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)泛型List分組輸出元素的方法,涉及C#針對(duì)List的遍歷、排序、輸出等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Unity實(shí)現(xiàn)車型識(shí)別的示例代碼

    Unity實(shí)現(xiàn)車型識(shí)別的示例代碼

    這篇文章主要介紹了在Unity中接入百度AI,實(shí)現(xiàn)檢測(cè)一張車輛圖片的具體車型。即對(duì)于輸入的一張圖片(可正常解碼,且長(zhǎng)寬比適宜),輸出圖片的車輛品牌及型號(hào)。需要的可以參考一下
    2022-01-01
  • C#模擬http 發(fā)送post或get請(qǐng)求的簡(jiǎn)單實(shí)例

    C#模擬http 發(fā)送post或get請(qǐng)求的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇C#模擬http 發(fā)送post或get請(qǐng)求的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • Unity3d射箭小游戲?qū)崿F(xiàn)示例

    Unity3d射箭小游戲?qū)崿F(xiàn)示例

    這篇文章主要為大家介紹了Unity3d射箭小游戲?qū)崿F(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • C#查看/寫入日志到Windows事件查看器的操作方法

    C#查看/寫入日志到Windows事件查看器的操作方法

    Windows 操作系統(tǒng)將與計(jì)算機(jī)的系統(tǒng)性能、應(yīng)用程序和安全方面相關(guān)的每個(gè)事件記錄在 C:\WINDOWS\system32\winevt 的日志中,事件查看器從這些原始事件日志中讀取信息,然后以可讀格式呈現(xiàn)信息,本文介紹了C#如何查看/寫入日志到Windows事件查看器,需要的朋友可以參考下
    2024-09-09
  • c# 獲取機(jī)器唯一識(shí)別碼的示例

    c# 獲取機(jī)器唯一識(shí)別碼的示例

    這篇文章主要介紹了c# 獲取機(jī)器唯一識(shí)別碼的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#自定義事件監(jiān)聽(tīng)實(shí)現(xiàn)方法

    C#自定義事件監(jiān)聽(tīng)實(shí)現(xiàn)方法

    這篇文章主要介紹了C#自定義事件監(jiān)聽(tīng)實(shí)現(xiàn)方法,涉及C#事件監(jiān)聽(tīng)的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08

最新評(píng)論

石城县| 富源县| 尚义县| 井研县| 宁晋县| 华安县| 宣汉县| 珲春市| 清涧县| 台南市| 沁源县| 洮南市| 梅州市| 宜兰市| 尉氏县| 永福县| 岗巴县| 会宁县| 时尚| 长治市| 庆安县| 绥化市| 佛教| 惠来县| 宁都县| 普格县| 涟源市| 高阳县| 砚山县| 安福县| 芷江| 临澧县| 东阳市| 牙克石市| 屏东市| 马尔康县| 利辛县| 仪陇县| 麻江县| 辽阳市| 云梦县|