C#多线程爬虫抓取免费代理IP的示例代码
发布时间 - 2026-01-11 02:59:14 点击率:次这里用到一个HTML解析辅助类:HtmlAgilityPack,如果没有网上找一个增加到库里,这个插件有很多版本,如果你开发环境是使用VS2005就2.0的类库,VS2010就使用4.0,以此类推..........然后直接创建一个控制台应用,将我下面的代码COPY替换就可以运行,下面就来讲讲我两年前做爬虫经历,当时是给一家公司做,也是用的C#,不过当时遇到一个头痛的问题就是抓的图片有病毒,然后系统挂了几次。所以抓网站图片要注意安全,虽然我这里没涉及到图片,但是还是提醒下看文章的朋友。
class Program
{
//存放所有抓取的代理
public static List<proxy> masterPorxyList = new List<proxy>();
//代理IP类
public class proxy
{
public string ip;
public string port;
public int speed;
public proxy(string pip,string pport,int pspeed)
{
this.ip = pip;
this.port = pport;
this.speed = pspeed;
}
}
//抓去处理方法
static void getProxyList(object pageIndex)
{
string urlCombin = "http://www.xicidaili.com/wt/" + pageIndex.ToString();
string catchHtml = catchProxIpMethord(urlCombin, "UTF8");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(catchHtml);
HtmlNode table = doc.DocumentNode.SelectSingleNode("//div[@id='wrapper']//div[@id='body']/table[1]");
HtmlNodeCollection collectiontrs = table.SelectNodes("./tr");
for (int i = 0; i < collectiontrs.Count; i++)
{
HtmlAgilityPack.HtmlNode itemtr = collectiontrs[i];
HtmlNodeCollection collectiontds = itemtr.ChildNodes;
//table中第一个是能用的代理标题,所以这里从第二行TR开始取值
if (i>0)
{
HtmlNode itemtdip = (HtmlNode)collectiontds[3];
HtmlNode itemtdport = (HtmlNode)collectiontds[5];
HtmlNode itemtdspeed = (HtmlNode)collectiontds[13];
string ip = itemtdip.InnerText.Trim();
string port = itemtdport.InnerText.Trim();
string speed = itemtdspeed.InnerHtml;
int beginIndex = speed.IndexOf(":", 0, speed.Length);
int endIndex = speed.IndexOf("%", 0, speed.Length);
int subSpeed = int.Parse(speed.Substring(beginIndex + 1, endIndex - beginIndex - 1));
//如果速度展示条的值大于90,表示这个代理速度快。
if (subSpeed > 90)
{
proxy temp = new proxy(ip, port, subSpeed);
masterPorxyList.Add(temp);
Console.WriteLine("当前是第:" + masterPorxyList.Count.ToString() + "个代理IP");
}
}
}
}
//抓网页方法
static string catchProxIpMethord(string url,string encoding )
{
string htmlStr = "";
try
{
if (!String.IsNullOrEmpty(url))
{
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream datastream = response.GetResponseStream();
Encoding ec = Encoding.Default;
if (encoding == "UTF8")
{
ec = Encoding.UTF8;
}
else if (encoding == "Default")
{
ec = Encoding.Default;
}
StreamReader reader = new StreamReader(datastream, ec);
htmlStr = reader.ReadToEnd();
reader.Close();
datastream.Close();
response.Close();
}
}
catch { }
return htmlStr;
}
static void Main(string[] args)
{
//多线程同时抓15页
for (int i = 1; i <= 15; i++)
{
ThreadPool.QueueUserWorkItem(getProxyList, i);
}
Console.Read();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# C#爬虫抓取代理IP
# C#
# 多线程爬虫
# c# Selenium爬取数据时防止webdriver封爬虫的方法
# C# 爬虫简单教程
# 用C#做网络爬虫的步骤教学
# c#爬虫爬取京东的商品信息
# C#程序如何调用C++ dll详细教程
# C# 利用代理爬虫网页的实现方法
# 利用C#实现最基本的小说爬虫示例代码
# C#简单爬虫案例分享
# C#制作多线程处理强化版网络爬虫
# 利用C#实现网络爬虫
# c# 基于Titanium爬取微信公众号历史文章列表
# 如果你
# 第一个
# 有很多
# 几次
# 以此类推
# 要注意
# 如果没有
# 将我
# 找一个
# 就来
# 涉及到
# 速度快
# 挂了
# 两年前
# 创建一个
# 多线程
# 大家多多
# 就可以
# 抓去
# 库里
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
js代码实现下拉菜单【推荐】
如何在宝塔面板中修改默认建站目录?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
教你用AI润色文章,让你的文字表达更专业
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
🚀拖拽式CMS建站能否实现高效与个性化并存?
Laravel如何实现模型的全局作用域?(Global Scope示例)
高端建站如何打造兼具美学与转化的品牌官网?
Laravel如何实现数据库事务?(DB Facade示例)
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
如何挑选优质建站一级代理提升网站排名?
iOS正则表达式验证手机号、邮箱、身份证号等
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
HTML 中动态设置元素 name 属性的正确语法详解
网站页面设计需要考虑到这些问题
Laravel如何实现事件和监听器?(Event & Listener实战)
简单实现jsp分页
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
三星、SK海力士获美批准:可向中国出口芯片制造设备
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Laravel怎么实现模型属性的自动加密
如何在景安云服务器上绑定域名并配置虚拟主机?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
如何在阿里云高效完成企业建站全流程?
PythonWeb开发入门教程_Flask快速构建Web应用
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
*服务器网站为何频现安全漏洞?
如何用好域名打造高点击率的自主建站?
如何快速搭建高效香港服务器网站?
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
微信h5制作网站有哪些,免费微信H5页面制作工具?
JavaScript如何实现倒计时_时间函数如何精确控制
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
如何在万网自助建站中设置域名及备案?
在线制作视频的网站有哪些,电脑如何制作视频短片?
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
Linux网络带宽限制_tc配置实践解析【教程】

