1.HtmlAgilityPack爬取優酷電影名
爬蟲的製作主要分為三個方面
1、載入網頁結構
2、解析網頁結構,轉變為符合需求的資料實體
3、儲存資料實體(資料庫,文字等)
在實際的編碼過程中,找到了一個好的類庫“HtmlAgilityPack”。
介紹:
官網:http://html-agility-pack.net/?z=codeplex
Html Agility Pack原始碼中的類大概有28個左右,其實不算一個很複雜的類庫,但它的功能確不弱,為解析DOM已經提供了足夠強大的功能支援,可以跟jQuery操作DOM媲美)
使用說明:
Html Agility Pack(XPath 定位),在實際使用過程中,發現有部分內容如果通過Css進行定位會比XPath更加方便,所以通過查詢找到了另外一個CSS的解析了類庫 ScrapySharp(Css 定位)
整理:
Nuget包需要引用的庫
1、Html Agility Pack(XPath 定位)
2、ScrapySharp(Css 定位)
程式碼下載地址:
https://github.com/happlyfox/FoxCrawler
第一點——載入網頁結構
Html Agility Pack封裝了載入內容的方法,使doc.Load(arguments),具有多種過載方式,以下列舉官網的三個例項
/// <summary>
/// 載入網頁結構
/// </summary>
private static void LoadDocment()
{
// 從檔案中載入
var docFile = new HtmlDocument();
docFile.Load("file path");
// 從字串中載入
var docHtml = new HtmlDocument();
docHtml.LoadHtml("html");
// 從網站中載入
var url = "http://html-agility-pack.net/";
var web = new HtmlWeb();
var docWeb = web.Load(url);
}
第二點——解析網頁結構,轉變為符合需求的資料實體
/// <summary>
/// 解析網頁結構
/// </summary>
private static YouKu ParsingWebStructure()
{
/*選用優酷片庫列表
地址:http://list.youku.com/category/show/c_96_s_1_d_1_p_{index}.html
*/
//首先載入web內容
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內容
//Console.WriteLine(doc.DocumentNode.InnerHtml);
/* HtmlAgilityPack 解析方式官網提供的有倆種示例*/
//1、 With XPath
var value = doc.DocumentNode.SelectSingleNode("//*[@id=`total_videonum`]").Attributes["id"].Value;
var resultCount = doc.DocumentNode.SelectSingleNode("//*[@id=`total_videonum`]").InnerText;
Console.WriteLine($"id=`{value}` 篩選結果:{resultCount}個");
// 2、With LINQ
var linqNodes = doc.DocumentNode.SelectSingleNode("//*[@id=`filterPanel`]/div[2]/ul").Descendants("li").ToList();
Console.WriteLine("電影產地:");
List<string> videoCountry = new List<string>();
foreach (var node in linqNodes)
{
videoCountry.Add(node.InnerText);
Console.Write($"{node.InnerText} ");
}
//3、使用ScrapySharp進行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} ");
}
//構造實體
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; }
}
第三點——儲存資料實體,轉變為符合需求的資料實體
/// <summary>
/// 儲存資料實體
/// </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)
{
//例項化DataContractJsonSerializer物件,需要待序列化的物件型別
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
//例項化一個記憶體流,用於存放序列化後的資料
MemoryStream stream = new MemoryStream();
//使用WriteObject序列化物件
serializer.WriteObject(stream, obj);
//寫入記憶體流中
byte[] dataBytes = new byte[stream.Length];
stream.Position = 0;
stream.Read(dataBytes, 0, (int)stream.Length);
//通過UTF8格式轉換為字串
return Encoding.UTF8.GetString(dataBytes);
}
四 Main
static void Main(string[] args)
{
///爬蟲的製作主要分為三個方面
///1、載入網頁結構
///2、解析網頁結構,轉變為符合需求的資料實體
///3、儲存資料實體(資料庫,文字等)
/*
* 在實際的編碼過程中,找到了一個好的類庫“HtmlAgilityPack”。
* 介紹:
* 官網:http://html-agility-pack.net/?z=codeplex
* Html Agility Pack原始碼中的類大概有28個左右,其實不算一個很複雜的類庫,但它的功能確不弱,為解析DOM已經提供了足夠強大的功能支援,可以跟jQuery操作DOM媲美)
* 使用說明:
* Html Agility Pack(XPath 定位),在實際使用過程中,發現有部分內容如果通過Css進行定位會比XPath更加方便,所以通過查詢找到了另外一個CSS的解析了類庫 ScrapySharp(Css 定位)
* 整理:
* Nuget包需要引用的庫
* 1、Html Agility Pack(XPath 定位)
* 2、ScrapySharp(Css 定位)
*/
//第一點——載入網頁結構,Html Agility Pack封裝了載入內容的方法,使用doc.Load(arguments),具有多種過載方式,以下列舉官網的三個例項
//LoadDocment();
//第二點——解析網頁結構,轉變為符合需求的資料實體
//ParsingWebStructure();
//第三點——儲存資料實體,轉變為符合需求的資料實體
SavaData();
Console.Read();
}
相關文章
- 手把手教你爬取優酷電影資訊-2
- 手把手教你爬取優酷電影資訊 -1
- Python爬取電影天堂Python
- 擼個爬蟲,爬取電影種子爬蟲
- scrapy爬取豆瓣電影資料
- 爬蟲01:爬取豆瓣電影TOP 250基本資訊爬蟲
- 爬蟲如何爬取貓眼電影TOP榜資料爬蟲
- python爬取貓眼正在熱映電影Python
- scrapy入門:豆瓣電影top250爬取
- 使用python爬取豆瓣電影TOP250Python
- Python爬取分析豆瓣電影Top250Python
- python 爬取飄花電影 下載地址Python
- Python3爬取貓眼電影資訊Python
- Python爬蟲例項:爬取貓眼電影——破解字型反爬Python爬蟲
- Python爬蟲筆記(4):利用scrapy爬取豆瓣電影250Python爬蟲筆記
- Python爬蟲教程-17-ajax爬取例項(豆瓣電影)Python爬蟲
- python爬蟲 爬取豆瓣電影 1-10 ajax 資料Python爬蟲
- python更換代理爬取豆瓣電影資料Python
- 爬取豆瓣電影Top250和資料分析
- 全棧 - 9 實戰 爬取豆瓣電影資料全棧
- 電影名解釋
- 正規表示式_爬取豆瓣電影排行Top250
- nodejs爬蟲獲取漫威超級英雄電影海報NodeJS爬蟲
- scrapy 爬電影 抓取資料
- Python網路爬蟲(正則, 內涵段子,貓眼電影, 鏈家爬取)Python爬蟲
- python-爬蟲-css提取-寫入csv-爬取貓眼電影榜單Python爬蟲CSS
- [python爬蟲] BeautifulSoup和Selenium對比爬取豆瓣Top250電影資訊Python爬蟲
- Python網路爬蟲實踐案例:爬取貓眼電影Top100Python爬蟲
- python爬取貓眼電影top100儲存到CSVPython
- 撿了滑鼠開網咖系列——nodejs爬取電影連結NodeJS
- Python反爬:利用js逆向和woff檔案爬取貓眼電影評分資訊PythonJS
- 手把手教你網路爬蟲(爬取豆瓣電影top250,附帶原始碼)爬蟲原始碼
- 【python爬蟲案例】利用python爬取豆瓣電影TOP250評分排行資料!Python爬蟲
- Python爬蟲入門 | 7 分類爬取豆瓣電影,解決動態載入問題Python爬蟲
- 分享已個根據電影名稱 下載電影海報的外掛
- 一個基於 golang 的爬蟲電影站Golang爬蟲
- Python電影爬蟲之身體每況愈下Python爬蟲
- python初級爬蟲之貓眼電影Python爬蟲