采集反爬虫网站,采集不到内容!跪求大神指点迷津!
//以下是部分代码
List<string> Weburllist = new List<string>();
List<string> Weburllistzx = new List<string>();
StringBuilder weburlSB = new StringBuilder();
bool IsGenxin = false;
MatchCollection mcexplain = Regex.Matches(sjurlDR["LinkContent"].ToString(),
@"(?<=\$-\$).*?(?=\$_\$)", RegexOptions.Singleline);
foreach (Match m in mcexplain)
{
Weburllist.Add(m.Value);
}
System.Net.WebRequest newswebrequest = System.Net.WebRequest.Create(sjurlDR
["LinkUrl"].ToString());
Uri uri = new Uri(sjurlDR["LinkUrl"].ToString());
SetHeaderValue(newswebrequest.Headers, "Host", uri.Host);
SetHeaderValue(newswebrequest.Headers, "UserAgent", "Mozilla/5.0 (Windows NT
6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0");
SetHeaderValue(newswebrequest.Headers, "Accept", "text/html,application/xhtml
+xml,application/xml;q=0.9,*/*;q=0.8");
SetHeaderValue(newswebrequest.Headers, "Accept-Language", "zh-CN,zh;q=0.8,en-
US;q=0.5,en;q=0.3");
SetHeaderValue(newswebrequest.Headers, "Accept-Encoding", "gzip, deflate,
sdch");
SetHeaderValue(newswebrequest.Headers, "Cookie:",
"gscu_792856215=62888640q5c56420; _gscbrs_792856215=1");
SetHeaderValue(newswebrequest.Headers, "Connection", "Keep-Alive");
SetHeaderValue(newswebrequest.Headers, "Cache-Control", "max-age=0");
//newswebrequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate,
sdch");
//newswebrequest.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-
CN,zh;q=0.8");
//newswebrequest.Headers.Add(HttpRequestHeader.CacheControl, "max-age=0");
//SetHeaderValue(newswebrequest.Headers, "Accept", "text/html,application/xhtml
+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
//SetHeaderValue(newswebrequest.Headers, "Connection", "Keep-Alive");
//newswebrequest.Headers.Add(HttpRequestHeader.Cookie,
"_gscu_792856215=62888640q5c56420; _gscbrs_792856215=1");
//SetHeaderValue(newswebrequest.Headers, "Host", "zjks.com");
//SetHeaderValue(newswebrequest.Headers, "UserAgent", "Mozilla/5.0 (Windows NT
6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36");
System.Net.WebResponse newswebresponse = newswebrequest.GetResponse();
System.IO.Stream newsstream = newswebresponse.GetResponseStream();
System.IO.StreamReader sr = new StreamReader(newsstream,
System.Text.Encoding.UTF8);
string ProductionContent = string.Empty;
ProductionContent = sr.ReadToEnd();
sr.Close();
Regex reg = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+/?");
string wangzhanyuming = reg.Match(sjurlDR["LinkUrl"].ToString(), 0).Value;
MatchCollection mc = Regex.Matches(ProductionContent.Replace("href=\"/", "href=
\"" + wangzhanyuming).Replace("href='/", "href='" + wangzhanyuming).Replace("href=/", "href=" +
wangzhanyuming).Replace("href=\"./", "href=\"" + wangzhanyuming), @"<[aA][^>]* href=[^>]*>",
RegexOptions.Singleline);
int Index = 1;
foreach (Match m in mc)
{
MatchCollection mc1 = Regex.Matches(m.Value.Replace("\"", "'"), @"[a-zA-
z]+://[^']*", RegexOptions.Singleline);
if (mc1.Count > 0)
{
foreach (Match m1 in mc1)
{
string linkurlstr = string.Empty;
linkurlstr = m1.Value.Replace("\"", "").Replace("'", "").Replace
(">", "").Replace(";", "");
weburlSB.Append("$-$");
weburlSB.Append(linkurlstr);
weburlSB.Append("$_$");
if (!Weburllist.Contains(linkurlstr) && !Weburllistzx.Contains
(linkurlstr))
{
IsGenxin = true;
Weburllistzx.Add(linkurlstr);
linkSb.AppendFormat("{0}<br/>", linkurlstr);
}
}
}
else
{
if (m.Value.IndexOf("javascript") == -1)
{
string amstr = string.Empty;
string wangzhanxiangduilujin = string.Empty;
wangzhanxiangduilujin = sjurlDR["LinkUrl"].ToString().Substring(0,
sjurlDR["LinkUrl"].ToString().LastIndexOf("/") + 1);
amstr = m.Value.Replace("href=\"", "href=\"" +
wangzhanxiangduilujin).Replace("href='", "href='" + wangzhanxiangduilujin);
MatchCollection mc11 = Regex.Matches(amstr, @"[a-zA-z]+://[^\s]*",
RegexOptions.Singleline);
foreach (Match m1 in mc11)
{
string linkurlstr = string.Empty;
linkurlstr = m1.Value.Replace("\"", "").Replace("'",
"").Replace(">", "").Replace(";", "");
weburlSB.Append("$-$");
weburlSB.Append(linkurlstr);
weburlSB.Append("$_$");
if (!Weburllist.Contains(linkurlstr) && !Weburllistzx.Contains
(linkurlstr))
{
IsGenxin = true;
Weburllistzx.Add(linkurlstr);
linkSb.AppendFormat("{0}<br/>", linkurlstr);
}
}
}
}
Index++;
}
System.Threading.Thread.Sleep(1000);
if (IsGenxin)
{
originlinksInfo oinfo = new originlinksInfo();
oinfo = originlinksLogic.Get(int.Parse(sjurlDR["ID"].ToString()));
oinfo.LinkContentnext = oinfo.LinkContent;
oinfo.LinkContent = weburlSB.ToString();
originlinksLogic.Update(oinfo);
System.Threading.Thread.Sleep(2000);
}
//如http://www.zjks.com/,这个网站总是采集失败,在这句代码
System.Net.WebResponse newswebresponse = newswebrequest.GetResponse();//这里在采集时总是跳出

相关推荐
python解决网站的反爬虫策略总结
本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。这里我们只讨论数据采集部分。 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式。前两种比较容易遇到,大多数网站都从这些角度来反爬虫。第三种一些应用ajax的网站会采用,这样增大了爬取的难度(防止静态爬虫使用ajax技术动态加载页面)。 1、从用户请求的Headers反爬虫是最常见的反爬虫策略。 伪装header。很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进
常见反爬虫策略
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
Nginx反爬虫策略,防止UA抓取网站
新增反爬虫策略文件: vim /usr/www/server/nginx/conf/anti_spider.conf 文件内容 #禁止Scrapy等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } #禁止指定UA及UA为空的访问 if ($http_user_agent ~ WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV
反爬虫策略反爬虫手段
反爬虫策略和手段 正所谓魔高一尺道高一丈 robots协议 反爬虫策略 反反爬虫策略
网站反爬虫分析
网站反爬虫主要手段 限制单一ip的访问量 服务器端nginx统计ip的一段时间内的访问量(eg:一分钟),如果访问量大于阀值,该ip将被禁止访问服务。简单有效。可以通过代理ip解决该问题。 User-Agent限制 在使用httpclient等工具访问网站时,如果没有设置user-Agent值,httpclient将会使用默认的user-Agent值。没啥用。 限制账户的访问量 如果经常超过访


.NET技术前瞻
