c#调用百度api主动推送提交链接,达到快速收录效果
百度介绍说:主动推送是最为快速的提交方式,建议您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。
主动推送达到怎么样的效果:
及时发现:可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录
保护原创:对于网站的最新原创内容,使用主动推送功能可以快速通知到百度,使内容可以在转发之前被百度发现
主动推送当然需要一定的技术力量,如果对于不懂技术的站长就不建议使用主动推送。
如何使用主动推送:
1,需要网站制作推送接口,进入百度站长平台的普通收录的主动推送工具后,会看到接口调用地址和token,token是由16个英文数字组合的字符串
2. 编写代码进行api调用,推送url地址。百度上面有介绍一些调用的实例,我这里使用的是c#开发的推送接口,下面是代码:
/// <summary>
/// 提交文章链接到百度
/// </summary>
/// <param name="url">文章的链接</param>
/// <param name="IsOriginal">是否为原创</param>
public static string PostBaidu(string url, bool IsOriginal,string strStie,string strToken)
{
string urlPage = "http://data.zz.baidu.com/urls?site=" + strStie + "&token=" + strToken + "";
//if (IsOriginal)
//{
// urlPage += "&type=original";
//}
HttpWebRequest request = null;
Encoding encoding = Encoding.GetEncoding("utf-8");
byte[] data = encoding.GetBytes(url); //这里采用utf-8编码
//设置提交的参数
request = WebRequest.Create(urlPage) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "text/plain";
request.ContentLength = data.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(data, 0, data.Length);
requestStream.Flush();
requestStream.Close();
}
//测试返回结果
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = (HttpWebResponse)ex.Response;
}
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
return retString;
}
直接拷贝就可以正常使用调用。结果会返回成功与否的json字符串。需要了解更多的详细信息可以登录百度站长平台查看说明。
多个url同时推送时,把多个url拼接起来推送即可,如代码
foreach (var url in urls)
{
strUrl += url+ "\n";
}
如果有调试时返回:{"remain":0,"success":0,"remain_original":0,"success_original":0}如此json串,说明你的发送参数有些问题,可以尝试修改或调整下代码。