如何在Visual Studio和 .NET 7中使用C#配置代理服务器进行网页抓取,并使用HtmlAgilityPack进行HTML解析

news/2025/3/20 6:22:54/

立即注册获得充值奖励,并开始自己的项目。亮数据-网络IP代理及全网数据一站式服务商

本项目演示了如何在 Visual Studio 和 .NET 7 中使用 C#配置代理服务器进行网页抓取,并使用 HtmlAgilityPack 进行 HTML 解析。通过使用代理服务器的 IP 地址,代理可以在网页抓取时保护您的数字身份,从而绕过 IP 封禁和地域限制。

前置条件

  • Visual Studio 2022 或 Visual Studio Code
  • .NET 7 或更高版本
  • HtmlAgilityPack NuGet 包

配置本地代理

  • 下载并安装 mitmproxy。
  • 通过命令 mitmproxy 启动 mitmproxy。

网页抓取设置

ProxyHttpClient - 用于配置 HttpClient 实例通过指定的代理服务器发送请求。
ProxyRotator - 管理一组代理,并提供随机选择代理的方法以处理每个网络请求。通过随机化在多个代理之间发送请求,可以有效减少被检测及 IP 封禁的风险。
当 isLocal 设置为 True 时,会使用本地 mitmproxy 代理;若设置为 False,则会使用公共代理 IP。
ProxyChecker - 用于验证代理服务器列表。当您使用 GetWorkingProxies 方法并传入代理 URL 列表时,该方法会通过异步调用 CheckProxy 来检查每个代理的状态,并把可以正常工作的代理收集到 workingProxies 列表中。在 CheckProxy 方法中,您会为每个代理 URL 建立一个 HttpClient,向 http://www.google.com 进行测试请求,并使用信号量(semaphore)安全地记录进度。
IsProxyWorking 方法通过检查响应的状态码,确认代理是否可用,如果可用则返回 true。此类能够帮助您从给定的代理列表中识别出可用的代理。
WebScraper - 封装了网页抓取功能。当您调用 ScrapeData 方法时,需要传入一个 ProxyRotator 实例和目标 URL。接下来会使用 HttpClient 异步地向该 URL 发送 GET 请求,获取 HTML 内容,并用 HtmlAgilityPack 库进行解析。然后使用 XPath 查询从特定 HTML 元素中定位并提取链接及对应的标题。如果找到任何文章链接,就会打印它们的标题和完整 URL;否则会输出一条提示消息,说明没有找到链接。

使用 Bright Data 代理

  • 注册 Bright Data 并创建 住宅代理。
  • 在 WebScrapeBrightdata 项目的 appsettings.json 文件中更新您的凭证。

运行应用程序

  • 使用命令 dotnet build 和 dotnet run -- --url https://www.wikipedia.org/ 编译并执行程序,运行后会显示抓取到的维基百科文章标题和链接。
    Bright Data 的代理服务 为 C# 的匿名和高效网页抓取提供可扩展的解决方案,帮助规避 IP 封禁。通过本教程,您可以学习如何在网页抓取项目中集成代理服务器,并遵循最佳实践来确保数据采集的可靠性。

http://www.ppmy.cn/news/1580525.html

相关文章

Deepseek+扣子实现xhs内容自动采集

效果展示 先看看演示效果 复制小红书链接,点击导入多维表格 之后就能在多维表格上自动拆解小红书的内容并记录了 Coze工作流搭建步骤 页面搭建 访问网站 地址:https://www.coze.cn/home 登录网站 创建应用 点击创建应用 点击创建空白应用 创建应…

Spring Boot集成JWT:打造安全的RESTful API

Spring Boot集成JWT:打造安全的RESTful API 1. JWT简介 JWT(JSON Web Token) 是一种开放标准(RFC 7519),用于在各方之间安全传输信息。它广泛应用于身份认证和授权场景,尤其适合无状态的RESTfu…

华为云在工业数字化方面的优势

华为云在工业数字化领域展现出全方位的优势,为制造业的转型升级提供了强大的助力。 一、专业的数字化诊断治理服务 华为云的数字化诊断治理专家服务为企业提供全面的深度诊断、成熟度评估、产业升级分析、创新治理和专家咨询等服务。其诊断模型参考国际国内标准&a…

系统思考:恶性循环

去年,我给一家知名人力资源公司交付了两个项目——一个在6月,另一个在8月,至今半年多了依然没有收到课酬。催促多次,得到的答复却各式各样:销售说老板卡了额度,老板说具体情况还需了解。每一次的推诿&#…

[贪心算法]-最大数(lambda 表达式的补充)

1.解析 我们一般使用的排序比较大小都是 a>b 那么a在b的前面 ab 无所谓 a<b a在b的后面 本题的排序则是 ab>ba 那么a在b的前面 abba 无所谓 ab<ba a在b的后面 2.代码 class Solution { public:string largestNumber(vector<int>& nums) {//1.先把所有…

Deepseek本地部署指南:在linux服务器部署,在mac远程web-ui访问

DeepSeek本地部署指南&#xff0c;特别是在Linux服务器上部署并在Mac上实现远程Web-UI访问&#xff0c;可以按照以下步骤进行&#xff1a; 一、在Linux服务器上部署DeepSeek模型 安装Ollama 使用命令curl -sSfL https://ollama.com/install.sh | sh来安装Ollama。安装完成后&a…

利用knn算法实现手写数字分类

利用knn算法实现手写数字分类 1.作者介绍2.KNN算法2.1KNN&#xff08;K-Nearest Neighbors&#xff09;算法核心思想2.2KNN算法的工作流程2.3优缺点2.4 KNN算法图示介绍 3.实验过程3.1安装所需库3.2 MNIST数据集3.3 导入手写数字图像进行分类3.4 完整代码3.5 实验结果 1.作者介…

处理变长的时间序列

pytorch中torch.nn.utils.rnn相关sequence的pad和pack操作 官网…torch.nn.utils.rnn.pack_padded_sequence 知乎pack_padded_sequence 和 pad_packed_sequence 结论 ✅ pack_padded_sequence 是最好的方法&#xff08;避免无效计算&#xff0c;提升性能&#xff09; &#x…