C#实现命令行下载网页并输出内容

一颗松果
一颗松果
发布时间:2026-10-13 | 4人浏览过
原创

本文将展示如何使用C#编写一个简单的控制台应用程序,通过命令行参数传入网址,利用WebRequest和HttpWebResponse类发起GET请求,并将网页的HTML源码读取后直接输出到控制台窗口。

核心逻辑与准备条件

实现网页下载的底层依赖于.NET Framework中的 System.Net 库。操作的核心流程为:创建请求对象 → 发送请求获取响应 → 获取响应流 → 解码读取内容 → 输出结果。用户需确保目标网站允许被访问(无严格的反爬验证),且网络通畅。

完整代码实现

以下代码定义了一个名为 GetWebPage 的类,包含主入口方法。程序启动后会检查是否有传入的参数(即网址列表),若存在则逐一处理。

using System;
using System.Net;
using System.Text;
using System.IO;

namespace Test {
    class GetWebPage {
        public static void Main(string[] args) {
            // 判断是否传入了网址参数
            if (args.Length == 0) {
                Console.WriteLine("请提供至少一个URL作为参数。");
                return;
            }

            // 遍历所有传入的参数
            for(int i = 0; i < args.Length; i++) {
                try {
                    // 1. 创建Web请求
                    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(args[i]);
                    
                    // 2. 发送请求并获取响应
                    HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                    
                    // 3. 获取响应数据流
                    Stream stream = httpWebResponse.GetResponseStream();
                    
                    // 4. 使用StreamReader读取内容,注意这里使用ASCII编码
                    StreamReader streamReader = new StreamReader(stream, Encoding.ASCII);
                    
                    // 5. 将读取到的网页源码输出到控制台
                    Console.WriteLine(streamReader.ReadToEnd());
                    
                    // 释放资源
                    httpWebResponse.Close();
                    streamReader.Close();
                } catch (Exception ex) {
                    Console.WriteLine($"请求 {args[i]} 失败: {ex.Message}");
                }
            }
            // 暂停控制台以便查看输出
            Console.Read();
        }
    }
}

运行与操作说明

第1步:编译代码

将上述代码保存为 GetWebPage.cs。在命令行中使用csc编译器进行编译:

csc GetWebPage.cs

编译成功后将生成 GetWebPage.exe 文件。

第2步:执行并传入参数

打开命令行工具(如CMD或PowerShell),导航至exe所在目录,输入命令并附带目标网址:

GetWebPage.exe https://www.example.com

程序将向该地址发起请求,如果成功,页面源代码将直接显示在控制台窗口中。由于使用了 Encoding.ASCII,非ASCII字符(如中文)可能会出现乱码,生产环境中建议根据实际页面的charset调整编码方式(如改为 UTF8)。

注意事项与排错

  • 编码问题:原文代码使用 Encoding.ASCII,这会导致包含中文或其他多字节字符的网页出现乱码。在实际应用中,应尝试检测响应头中的 Content-Type 或使用 Encoding.UTF8。
  • HTTPS支持:在某些较新的.NET环境或系统中,可能需要显式指定协议版本或信任证书,否则可能抛出 WebException。
  • 异常处理:上述示例添加了基本的try-catch块,以防止单个URL请求失败导致整个程序崩溃。

简要总结

该C#示例通过基础的WebRequest机制实现了简单的网页内容抓取。虽然功能基础且编码处理较为原始,但清晰展示了从发出HTTP请求到读取响应流的完整路径。以上就是C#下载网页并在控制台输出的详细内容,更多关于C#网络编程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表