C#攻克反爬虫之代理IP爬取

目前很多大型网站在反爬虫时采取IP限制策略,限制同一个IP的请求频率及次数,或者同一IP在达到请求次数后强制登陆验证等。此时我们就需要用到代理IP来突破限制,此篇我们介绍通过DotnetSpider框架爬取西刺高匿代理IP的过程。

DotnetSpider框架简介

DotnetSpider是.net core开发的开源爬虫项目,基本开箱即用,对于爬虫各个部分的封装已经比较成熟,github下载地址:
https://github.com/dotnetcore/DotnetSpider
下载下来运行几个示例基本就知道如何使用了,示例在DotnetSpider.Sample解决方案下面,下面我们看一下例子中的CnblogsSpider。
CnblogsSpider在被调用时会执行Initialize()方法做一些爬虫配置的初始化,如下:

		protected override async Task Initialize()
		{
   
			NewGuidId();
			Depth = 3;
			AddDataFlow(new ListNewsParser()).AddDataFlow(new ConsoleStorage());
			await AddRequests("https://news.cnblogs.com/n/page/1/");
		}

其中最重要的包含三部分,ListNewsParser,ConsoleStorage和最后的AddRequests。ListNewsParser是定义爬虫如何解析我们要爬取的网页以及返回怎样的一个结果,ConsoleStorage是定义爬虫如何保存我们爬取的结果,AddRequests则是指定爬虫爬取的目标url。下面我们分别看一下ListNewsParser和ConsoleStorage的代码。

class ListNewsParser : DataParser
		{
   
			public ListNewsParser()
			{
   
				Required = DataParserHelper.CheckIfRequiredByRegex("news\\.cnblogs\\.com/n/page");
				// 如果你还想翻页则可以去掉注释
				//FollowRequestQuerier =
				//	BuildFollowRequestQuerier(DataParserHelper.QueryFollowRequestsByXPath(".//div[@class='pager']"));
			}

			protected override Task<DataFlowResult> Parse(DataFlowContext context)
			{
   
				var news = context.Selectable.XPath(".//div[@class='news_block']").Nodes();
				foreach (var item in news)
				{
   
					var title = item.Select(Selectors.XPath(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值