csharp,using System.Net;,WebClient client = new WebClient();,string content = client.DownloadString("http://example.com");,
“在C#中提取网络相关内容是一个较为宽泛的概念,以下是几种常见的情况及实现方法:
1、引入命名空间
using System.Net.Http;
2、创建HttpClient实例并发送请求
示例代码如下:
static async Task Main(string[] args) { using (HttpClient client = new HttpClient()) { try { HttpResponseMessage response = await client.GetAsync("https://example.com"); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } catch (HttpRequestException e) { Console.WriteLine(" Exception Caught!"); Console.WriteLine("Message :{0} ", e.Message); } } }
3、解释
首先创建了HttpClient的实例,使用GetAsync
方法发送GET请求到指定的网址,该方法返回一个HttpResponseMessage对象,通过调用EnsureSuccessStatusCode
方法来检查响应是否成功,若不成功则抛出异常,然后使用ReadAsStringAsync
方法将响应内容读取为字符串并输出。
二、解析HTML获取特定数据
1、引入HtmlAgilityPack库
需要先安装HtmlAgilityPack,可通过NuGet包管理器安装。
安装命令:Install-Package HtmlAgilityPack
2、加载HTML并提取数据
示例代码如下:
using HtmlAgilityPack; class Program { static void Main() { string url = "https://example.com"; string html = GetHtml(url); HtmlDocument document = new HtmlDocument(); document.LoadHtml(html); var nodes = document.DocumentNode.SelectNodes("//a"); foreach (var node in nodes) { Console.WriteLine(node.InnerText); } } static string GetHtml(string url) { using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"); return client.GetStringAsync(url).Result; } } }
3、解释
先定义了一个获取网页HTML内容的GetHtml
方法,在该方法中使用HttpClient发送请求并获取网页内容,然后在主方法中,使用HtmlAgilityPack的HtmlDocument
类加载HTML内容,通过XPath表达式"//a"
选择所有的<a>
标签节点,并遍历这些节点输出其文本内容。
三、从网络流中提取数据
1、使用TcpClient连接网络流
示例代码如下:
using System.Net.Sockets; using System; using System.Text; class Program { static void Main() { TcpClient client = new TcpClient("localhost", 8080); NetworkStream stream = client.GetStream(); byte[] data = new byte[1024]; int bytesRead = stream.Read(data, 0, data.Length); string responseData = Encoding.ASCII.GetString(data, 0, bytesRead); Console.WriteLine(responseData); stream.Close(); client.Close(); } }
2、解释
首先创建了TcpClient的实例,连接到本地的8080端口,通过GetStream
方法获取网络流,然后使用Read
方法从流中读取数据到字节数组中,最后将字节数组转换为字符串并输出,需要注意的是,这里的服务器端需要在相应的端口进行监听并提供数据。
四、提取网络接口信息(如本机IP地址等)
1、使用System.Net.NetworkInformation命名空间
示例代码如下:
using System.Net.NetworkInformation; class Program { static void Main() { foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { if (ni.OperationalStatus == OperationalStatus.Up) { Console.WriteLine("Interface: " + ni.Name); Console.WriteLine(" IP Addresses:"); foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses) { if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { Console.WriteLine(" " + ip.Address.ToString()); } } } } } }
2、解释
通过NetworkInterface.GetAllNetworkInterfaces
方法获取本机的所有网络接口,然后遍历每个接口,判断其操作状态是否为“Up”(即启用状态),对于启用的接口,获取其名称和IP地址信息,并筛选出IPv4地址进行输出。
在C#中提取网络相关内容有多种方式,可以根据具体的需求选择合适的方法来实现,无论是获取网页内容、解析HTML、从网络流中读取数据还是提取本机网络接口信息,C#都提供了丰富的类和方法来支持这些操作,使得网络编程变得更加便捷和高效。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1576387.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复