当前位置:首页 > 行业动态 > 正文

c# 提取网络

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库

c# 提取网络

需要先安装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、解释

c# 提取网络

先定义了一个获取网页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方法从流中读取数据到字节数组中,最后将字节数组转换为字符串并输出,需要注意的是,这里的服务器端需要在相应的端口进行监听并提供数据。

c# 提取网络

四、提取网络接口信息(如本机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#都提供了丰富的类和方法来支持这些操作,使得网络编程变得更加便捷和高效。