c# .net6 模拟浏览器下载文件 ,给出具体例子
时间: 2024-10-18 16:05:53 浏览: 36
C# 模拟浏览器并自动操作的实例代码
在C# .NET 6 中,模拟浏览器下载文件通常涉及到WebBrowser控件或者使用第三方库如Puppeteer或AngleSharp等。因为WebBrowser控件已经弃用,这里我们将使用AngleSharp库,它提供了一个简单的方式来解析HTML和模拟点击下载链接。
首先,确保安装 AngleSharp 和它的依赖项。可以通过 NuGet 包管理器安装 AngleSharp 和 Newtonsoft.Json:
```bash
dotnet add package AngleSharp
dotnet add package Newtonsoft.Json
```
下面是一个简单的示例,展示如何使用AngleSharp下载指定URL的文件:
```csharp
using AngleSharp;
using AngleSharp.Dom;
using AngleSharp.Html.Parser;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Net;
public async Task DownloadFile(string url)
{
// 创建一个解析器实例
var parser = new HtmlParser();
// 解析网页内容
var document = await parser.ParseDocumentAsync(new Uri(url));
// 获取目标下载链接,假设链接在<a>标签内有"data-download-url"属性
var downloadLink = document.QuerySelectorFirst("a[data-download-url]");
if (downloadLink != null)
{
string downloadUrl = downloadLink.GetAttribute("data-download-url");
// 使用HttpClient发起下载请求
using var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3");
var request = new HttpRequestMessage(HttpMethod.Get, downloadUrl);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream"));
try
{
HttpResponseMessage response = await httpClient.SendAsync(request);
// 检查HTTP状态码是否为200(成功)
response.EnsureSuccessStatusCode();
// 将响应体保存到本地文件
string saveFilePath = Path.Combine(Directory.GetCurrentDirectory(), Path.GetFileName(downloadUrl));
using (var fileStream = File.Open(saveFilePath, FileMode.Create))
{
await response.Content.CopyToAsync(fileStream);
}
Console.WriteLine($"Downloaded file saved at: {saveFilePath}");
}
catch (Exception ex)
{
Console.WriteLine($"Error occurred during download: {ex.Message}");
}
}
else
{
Console.WriteLine("No download link found on the page.");
}
}
// 调用函数并传入要下载的URL
DownloadFile("https://example.com/download-page");
```
这个例子假设目标文件是一个带有"data-download-url"属性的链接。实际应用中,你可能需要根据实际情况调整选择下载链接的方式。
阅读全文