我的联系方式
微信luoluo888673
QQ951285291
邮箱951285291@qq.com
2020-03-08学海无涯
个人博客上线有一段时间了,百度索引量一直上不去,因此最近几天看了下相关文章,其中在百度站长平台发现了“链接提交”这个功能。
因此有兴趣是实现以下,看下效果如何。
在查阅百度接口之后,寻思还是用应用程序去实现吧,正好可以把程序放出来,给大家使用。程序界面如下:
在这里就不多说无用的代码了,就说下关于url抓取部分吧,其中代码如下:
/// <summary>
/// 递归抓取下级URL
/// </summary>
/// <param name="Host"></param>
/// <param name="Urls"></param>
/// <param name="NowLevel"></param>
/// <param name="Level"></param>
protected void GetLevelUrl(string Host, List<string> Urls, int NowLevel, int Level)
{
this.BeginInvoke(updateTxt, string.Format("第{0}级网址抓取已启动!", NowLevel));
if (Urls.Count > 0)
{
List<string> levelist = new List<string>();
foreach (string url in Urls)
{
string html = GetHtml(url);
if (!string.IsNullOrEmpty(html))
{
string regex = "(?<=<a.*?href *?= *?\").*?(?=\".*?</a>)";
Regex re = new Regex(regex);
MatchCollection matches = re.Matches(html);
System.Collections.IEnumerator enu = matches.GetEnumerator();
while (enu.MoveNext() && enu.Current != null)
{
Match match = (Match)(enu.Current);
string nowurl = match.Value;
if (!string.IsNullOrEmpty(nowurl) && nowurl != "#" && nowurl != "javascript:void();" && !nowurl.Contains("javascript"))
{
if (!nowurl.Contains("http://"))
{
if (nowurl.Substring(0, 1) == "/")
{
nowurl = Host + nowurl;
}
else
{
nowurl = Host + "/" + nowurl;
}
}
if (!ListUrls.Contains(nowurl) && nowurl.Contains(Host))
{
Thread.Sleep(10);
this.BeginInvoke(updateTxt, nowurl);
ListUrls.Add(nowurl);
levelist.Add(nowurl);
}
}
}
}
}
Dictionarys.Add(NowLevel, levelist);
this.BeginInvoke(updateTxt, string.Format("第{0}级网址抓取已完成,共计抓取网址:{1}个!", NowLevel, levelist.Count));
//完全遍历完毕后继续下级遍历
if (NowLevel < Level)
{
NowLevel++;
GetLevelUrl(Host, levelist, NowLevel, Level);
}
}
else
{
this.BeginInvoke(updateTxt, string.Format("第{0}级网址抓取已完成,共计抓取网址:0个,无下级URL,程序已停止抓取!", NowLevel));
}
}
置于向百度提交之类的,在这里就不多说了,稍后,我将会把源码发布出来。