小弟写了一个博客备份工具,在备份的过程中要对每篇博客地址进行访问,取得网页源码进行备份。
现在遇到的问题是,当备份到150篇左右时,网站拒绝访问了,也就是说访问太频繁被拒绝了,这个备份程序放在一个单独的类库中,请问怎么控制访问的频率(能不能用线程等待实现,如果能请指点一下),有没有其他好的解决方案?
简要代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;
namespace BlogMoveLib
{
public class BlogAnalysis
{
public IList<Blog> Analysis(IList<string> BlogAllUrl)
{
string content;
Blog model=new Blog();
IList<Blog> blogList = new List<Blog>();
foreach(string url in BlogAllUrl)
{
content=GetHtml(url);
model = GetBlogInfo(content);
blogList.Add(model);
}
if (blogList.Count > 0)
return blogList;
return null;
}
/// <summary>
/// 获得网址原代码
/// </summary>
/// <param name="Url">网址</param>
/// <returns>string</returns>
private string GetHtml(string Url)
{
//过程省略
}
/// <summary>
/// 解析博客主体
/// </summary>
/// <param name="content">网页源码</param>
/// <returns>博客实体</returns>
private Blog GetBlogInfo(string content)
{
//...过程省略
}
}
}
sleep 一下就OK了,也可以用TIMER来处理~
mark
每GetBlogInfo一次用Thread.Sleep让程序暂停一下,降低访问频率,这样应该就不会被封了.
或者你也可以在GetHtml方法中加入代理试试.