好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

ASP.NET/ASP.NET MVC 百度SEO 链接自动提交 熊掌号自动提交实现

百度站长平台为了方便站长对自己网站内容的提交(新数据、历史数据),提供了链接提交API,百度熊掌号也是这样的,但是官网给出的范例是使用curl,post,php的方式。而对于使用ASP.NET开发网站的站长来说并没有文档。其实众所周知,C#是可以模拟Post提交的,因此解决方案也就产生了。

一、对官网提供的API分析:

1、百度站长链接自动提交(Post):

API地址:http://data.zz.baidu.com/urls?site=*****&token=*****

参数:多条需要提交的Url 换行即可

返回参数:

状态码为200,可能返回以下字段:


成功返回示例:

{

    "remain":4999998,
    "success":2,
    "not_same_site":[],
    "not_valid":[]
}

2、熊掌号资源自动提交(Post)

API地址:http://data.zz.baidu.com/urls?appid=*******&token=*******&type=batch

参数:type  batch (历史数据) realtime(新数据)

参数:多条需要提交的Url 换行即可

返回参数:

状态码为200,可能返回以下字段:


成功返回示例:

{
"remain_realtime": 9,
"success_realtime": 1
}

二、参考官方提供的Post请求方式,尝试对百度SEO链接自动提交 (Demo) 代码如下:

前端:

  1. @{

  2.    ViewBag.Title = "ASP.NET 模拟Post 请求API 自动推送网站内容给百度";

  3. }

  4. <form action="/PushContent/Push" method="post">

  5.    <div style="border:1px solid #ccc; padding:10px; width:460px;margin:10px; height:100px;">@ViewBag.Result</div>

  6.    <input type="submit" value="提交数据" />

  7. </form>

后端:

  1. /// <summary>

  2. /// 提交数据

  3. /// </summary>

  4. /// <returns></returns>

  5. [HttpPost]

  6. public ActionResult Push()

  7. {

  8.    string apiUrl = @"http://data.zz.baidu.com/urls?site=*******&token=*******";

  9.    string formData = "";

  10.    //TODO

  11.    //查询要提交的Url集合

  12.    List<string> urlList = new List<string> {

  13.        "http://www.51softs.com/sql-server/sql-server-use-sqlfile-import-database.html"

  14.    };

  15.    //循环Url集合 拼接成需要提交的格式 (\n 换行即可)

  16.    foreach (var url in urlList)

  17.    {

  18.        formData += url + "\n";

  19.    }

  20.    byte[] postData = System.Text.Encoding.UTF8.GetBytes(formData);

  21.    //模拟Post 并设置Http请求标头

  22.    HttpWebRequest request = System.Net.WebRequest.Create(apiUrl) as System.Net.HttpWebRequest;

  23.    Encoding myEncoding = System.Text.Encoding.UTF8;

  24.    request.Method = "POST";

  25.    request.KeepAlive = false;

  26.    request.AllowAutoRedirect = true;

  27.    request.ContentType = "text/plain";

  28.    request.UserAgent = "curl/7.12.1";

  29.    request.ContentLength = postData.Length;

  30.    //模拟请求并获取响应值

  31.    System.IO.Stream outputStream = request.GetRequestStream();

  32.    outputStream.Write(postData, 0, postData.Length);

  33.    outputStream.Close();

  34.    HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse;

  35.    Stream responseStream = response.GetResponseStream();

  36.    StreamReader reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("UTF-8"));

  37.    string resultData = reader.ReadToEnd();

  38.    ViewBag.Result = resultData;

  39.    return View("Index");

  40. }

实现效果如下:

 

因此可以提取以下工具类代码:

public static class BaiduPush
{
    /// <summary>
    /// 百度站长<a href="http://www.51softs.com/tag/seo" title="查看更多关于 SEO 的文章" target="_blank">SEO</a>链接自动提交、熊掌号<a href="http://www.51softs.com/tag/%e9%93%be%e6%8e%a5%e6%8f%90%e4%ba%a4" title="查看更多关于 链接提交 的文章" target="_blank">链接提交</a> 通用方法
    /// </summary>
    /// <param name="urlList">需要提交的链接地址 新增数据只需要一条  若是提交历史通常从数据库查询出来</param>
    /// <param name="api">百度站长工具提供的API 地址</param>
    /// <returns></returns>
    public static string BaiduUrlPush(List<string> urlList,string api)
    {
        string formData = "";
        foreach (var url in urlList)
        {
            formData += url + "\n";
        }
        byte[] postData = System.Text.Encoding.UTF8.GetBytes(formData);
        //模拟Post 并设置Http请求标头
        HttpWebRequest request = System.Net.WebRequest.Create(api) as System.Net.HttpWebRequest;
        Encoding myEncoding = System.Text.Encoding.UTF8;
        request.Method = "POST";
        request.KeepAlive = false;
        request.AllowAutoRedirect = true;
        request.ContentType = "text/plain";
        request.UserAgent = "curl/7.12.1";
        request.ContentLength = postData.Length;
        //模拟请求并获取响应值
        System.IO.Stream outputStream = request.GetRequestStream();
        outputStream.Write(postData, 0, postData.Length);
        outputStream.Close();
        HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse;
        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("UTF-8"));
        string resultData = reader.ReadToEnd();
        return resultData;
    }
}

查看更多关于ASP.NET/ASP.NET MVC 百度SEO 链接自动提交 熊掌号自动提交实现的详细内容...

  阅读:6544次