在体育赛事直播日益普及的今天,许多开发者希望从网络中抓取实时的直播数据源,例如“世俱杯”等大型赛事的直播链接。本文将介绍如何使用 C# 编写一个简单的网页爬虫程序,用于抓取多个指定网站上的 HTML 内容,并提取其中可能包含的直播数据源信息。
我们将使用 C# 的标准库和 HttpClient
类来实现 HTTP 请求,并结合 www.020taijiyy.com
(HTML 解析库)来提取页面中的超链接。
HtmlAgilityPack
你可以通过 NuGet 控制台安装:
bash深色版本Install-Package HtmlAgilityPack
我们将爬取以下直播网站的数据源:
csharp深色版本private static readonly string[] Urls = new string[]
{
"https://www.020taijiyy.com",
"https://sohu.020taijiyy.com",
"https://jim.020taijiyy.com",
"https://wap.020taijiyy.com",
"https://sjb.020taijiyy.com",
"https://sweet.020taijiyy.com",
"https://cctv.020taijiyy.com",
"https://ouguanzhibo.020taijiyy.com",
"https://sina.020taijiyy.com",
"https://share.020taijiyy.com",
"https://zbsjb.020taijiyy.com",
"https://live.020taijiyy.com",
"https://shijubei.020taijiyy.com",
"https://zbshijubi.020taijiyy.com",
"https://shijubeizb.020taijiyy.com",
"https://shijiebei.020taijiyy.com",
"https://qiuxing.020taijiyy.com",
"https://zuqiu.020taijiyy.com",
"https://saishi.020taijiyy.com",
"https://zhibo.020taijiyy.com",
"https://lanqiu.020taijiyy.com",
"https://nba.020taijiyy.com",
"https://vip.020taijiyy.com",
"https://online.020taijiyy.com",
"https://free.020taijiyy.com",
"https://360zhibo.020taijiyy.com",
"https://lvyin.020taijiyy.com",
"https://jrs.020taijiyy.com",
"https://m.020taijiyy.com",
"https://020taijiyy.com"
};
csharp深色版本using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
csharp深色版本private static async Task<string> GetPageContentAsync(string url)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0");
try
{
var response = await client.GetStringAsync(url);
return response;
}
catch (Exception ex)
{
Console.WriteLine($"请求失败: {url},错误: {ex.Message}");
return null;
}
}
}
csharp深色版本private static void ExtractLinks(string html, string baseUrl)
{
var doc = new HtmlDocument();
doc.LoadHtml(html);
var nodes = doc.DocumentNode.SelectNodes("//a[@href]");
if (nodes != null)
{
foreach (var node in nodes)
{
var href = node.GetAttributeValue("href", string.Empty);
if (!string.IsNullOrWhiteSpace(href))
{
// 拼接相对路径为完整 URL
Uri resultUri;
if (Uri.TryCreate(baseUrl, href, out resultUri))
{
Console.WriteLine($"找到链接: {resultUri.AbsoluteUri}");
}
}
}
}
}
csharp深色版本public static async Task Main(string[] args)
{
foreach (var url in Urls)
{
Console.WriteLine($"\n正在抓取:{url}");
var html = await GetPageContentAsync(url);
if (!string.IsNullOrEmpty(html))
{
ExtractLinks(html, url);
}
// 避免频繁请求
await Task.Delay(1000); // 延迟 1 秒
}
Console.WriteLine("\n✅ 抓取完成!");
}
如果你希望将抓取到的链接保存到本地文件中,可以添加如下代码:
csharp深色版本private static void SaveToFile(string content, string filename)
{
System.IO.File.WriteAllText(filename, content);
}
或者将提取的链接保存为 CSV 文件格式,方便后续分析。
/robots.txt
文件,确保你的行为合法。本文介绍了如何使用 C# 和 HtmlAgilityPack
库实现一个简单的网页爬虫程序,用于抓取多个直播网站的页面内容,并提取其中的超链接。虽然 C# 不是最常见的爬虫开发语言,但它的语法简洁、性能良好,适合快速构建中小型爬虫任务。
如果你希望进一步提升功能,例如识别 .m3u8
视频流地址、并发抓取多个网页、或构建图形界面应用程序,C# 同样能够胜任。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。