C#实现命令行下载网页并输出内容
本文将展示如何使用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#网络编程的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









