网页qq抓取什么原理(短时间就是网站几十次内访问次数的屏蔽策略不一样怎么办 )

优采云 发布时间: 2022-01-22 21:19

  网页qq抓取什么原理(短时间就是网站几十次内访问次数的屏蔽策略不一样怎么办

)

  如果要指定抓取一个网站的几十万页,一般控制每个IP的访问频率。当然,对于爬虫内存、网络性能、爬取间隔等一般不关心。如果你想每天爬几十万个页面,访问频率限制的问题并不是最难的问题,所以你必须控制访问频率。

  本地机器,本地IP去采集,短时间内快速访问网站几十次肯定会被屏蔽。每个网站对IP都有不同的解封策略,有的只能访问1小时或更长时间。有两种方法可以突破爬行频率的限制。一是研究网站的反爬策略。每个网站的防爬都不同,只在详情页控制。二是使用爬虫代理IP,使用更多的IP进行爬取。

  如果要爬取几十万个网页,网络性能也需要优化。

  每个网站对于短时间内的访问量都有不同的拦截策略,需要用代码实际测试一下:

  // 要访问的目标页面

string targetUrl = "http://httpbin.org/ip";

// 代理服务器(产品官网 www.16yun.cn)

string proxyHost = "http://t.16yun.cn";

string proxyPort = "31111";

// 代理验证信息

string proxyUser = "username";

string proxyPass = "password";

// 设置代理服务器

WebProxy proxy = new WebProxy(string.Format("{0}:{1}", proxyHost, proxyPort), true);

ServicePointManager.Expect100Continue = false;

var request = WebRequest.Create(targetUrl) as HttpWebRequest;

request.AllowAutoRedirect = true;

request.KeepAlive = true;

request.Method = "GET";

request.Proxy = proxy;

//request.Proxy.Credentials = CredentialCache.DefaultCredentials;

request.Proxy.Credentials = new System.Net.NetworkCredential(proxyUser, proxyPass);

// 设置Proxy Tunnel

// Random ran=new Random();

// int tunnel =ran.Next(1,10000);

// request.Headers.Add("Proxy-Tunnel", String.valueOf(tunnel));

//request.Timeout = 20000;

//request.ServicePoint.ConnectionLimit = 512;

//request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36";

//request.Headers.Add("Cache-Control", "max-age=0");

//request.Headers.Add("DNT", "1");

//String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(proxyUser + ":" + proxyPass));

//request.Headers.Add("Proxy-Authorization", "Basic " + encoded);

using (var response = request.GetResponse() as HttpWebResponse)

using (var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))

{

string htmlStr = sr.ReadToEnd();

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线