C# 如何抓取網頁資料
前言
當初要看新聞都需要去他們的官網網頁看新聞資料,而且只能看一家新聞的報導,靈機一動就想用爬蟲一次抓取多家新聞的資料,就可以看多家媒體的新聞報導。
流程圖
流程
C# 程式編成
抓取各家新聞的網頁資料
顯示畫面
前置作業
引入net和HtmlAgilityPack 程式庫
了解xml格式
參考:https://zh.wikipedia.org/wiki/XPath
程式
static void Main(string[] args)
{
try
{
HtmlWeb webClient = new HtmlWeb(); //建立htmlweb
//處理C# 連線 HTTPS 網站發生驗證失敗導致基礎連接已關閉
ServicePointManager.SecurityProtocol =SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls |
SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
HtmlDocument doc = webClient.Load("https://www.chinatimes.com/newspapers/2601?chdtv"); //載入網址資料
HtmlNodeCollection list = doc.DocumentNode.SelectNodes("/html/body/div[2]/div/div[2]/div/section/ul/li"); //抓取Xpath資料
HtmlDocument appledoc = webClient.Load("https://tw.appledaily.com/new/realtime"); //載入網址資料
HtmlNodeCollection applelist = appledoc.DocumentNode.SelectNodes("//*[@id='maincontent']/div[2]/div[3]/ul/li"); //抓取Xpath資料
HtmlDocument linedoc = webClient.Load("https://today.line.me/TW/pc/main/100259"); //載入網址資料
HtmlNodeCollection linelist = linedoc.DocumentNode.SelectNodes("//*[@id='left_area']/div[3]/ul[1]/li"); //抓取Xpath資料
Console.WriteLine("中國時報");
for(int i=0;i<3;i++)
{
string time = list[i].SelectSingleNode("div/div/div[2]/div/time/span[1]").InnerText;
string date = list[i].SelectSingleNode("div/div/div[2]/div/time/span[2]").InnerText;
Console.WriteLine("標題:" + list[i].SelectSingleNode("div/div/div[2]/h3").InnerText);
Console.WriteLine(time+" "+date);
}
Console.WriteLine("蘋果日報");
for (int i = 0; i < 3; i++)
{
string time = applelist[i].SelectSingleNode("a/time").InnerText;
string h2 = applelist[i].SelectSingleNode("a/h2").InnerText;
string h1 = applelist[i].SelectSingleNode("a/h1").InnerText;
Console.WriteLine(h1);
Console.WriteLine(time);
}
Console.WriteLine("LineToday");
for (int i = 0; i < 4; i++)
{
string h1 = linelist[i].SelectSingleNode("a/div/p").InnerText;
string h2 = linelist[i].SelectSingleNode("a/div/span").InnerText;
Console.WriteLine(h1);
Console.WriteLine(h2);
}
}
catch (Exception ex)
{
Console.WriteLine("ERROR=" + ex.ToString());
}
Console.ReadLine();
}
Result
結語
我們學到了如何利用C#爬蟲程式抓取網頁資料,整理成自己想看的資料。