MYBLOG

欢迎来到小马哥的个人博客~

[原创].net百度URL推送工具源码分享

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));
            }
        }


置于向百度提交之类的,在这里就不多说了,稍后,我将会把源码发布出来。