提交方式:
1.百度站长入口
http://zhanzhang.baidu.com/linksubmit/index
网站提高了很多站长所需的东西。你一看便知。
2.登录后:网站抓取——>链接提交
你会发现,百度提供了多种链接提交的方式:
自动提交:
主动推送(实时)、自动推送、 sitemap
手动提交:。
下面主要演示通过java代码进行主动推送。
来到主动推送页面,我们可以看到如下页面展示:
其中接口调用地址: http://data.zz.baidu.com/urls?site=www.xxxx.com&token=xxxx
这是我们,推送的入口,很重要,不要告诉别人,避免别人向着瞎推送,因为是有上限的不过足够一个网站使用,当然推送的地址,域名必须为当前网站地址http://www.xxxx.com(注:需进入百度站长平台http://zhanzhang.baidu.com/linksubmit/index获取本网站的token值)
百度站长给出了,相关的使用说明文档
http://zhanzhang.baidu.com/college/courseinfo?id=267&page=2#h2_article_title14
给出的Post推送示例如下:
2)post推送示例
-------------
POST /urls?site=www.58.com&token=edk7ychrEZP9pDQD HTTP/1.1
User-Agent: curl/7.12.1
Host: data.zz.baidu.com
Content-Length: 83
------------------
http://www.example.com/1.html
http://www.example.com/2.html
其中post:对应的推送地址;
User-Agent:用户带来;
Host:主机;
Content-Length内容长度;
接着是推送的地址
其中User-Agent、Content-Length需要我们在表头继续设置。
方式一:利用Spring RestTemplate进行推送
RestTemplate是Spring提供的用于访问Rest服务的客户端, RestTemplate提供了多种便捷访问远程Http服务的方法,也就是get、post、put、delete等等请求,都能实现,这里不做详细介绍。
如果你选择这种方式,你得有过java框架相关开发经验,用过spring,其中具体配置就不给出了。
Maven引入Spring
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>4.3.5.RELEASEversion>
dependency>
这样,RestTemplate相关的类库就进来了。
在Bean中配置RestTemplate
id="restTemplate" class="org.springframework.web.client.RestTemplate"/>
好了下面在测试类中进行演示
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class HelloTest {
@Autowired
RestTemplate restTemplate;
@Test
public void testPush() {
String api_url = "http://data.zz.baidu.com/urls?site=www.***.com&token=****";
List urlList = new ArrayList<>();
urlList.add("http://www.***.com/1");
urlList.add("http://www.***.com/2");
urlList.add("http://www.***.com/3");
StringBuffer urlBuffer = new StringBuffer();
for (String url : urlList) {
urlBuffer.append(url + "\n");
}
System.out.println(urlBuffer.toString());
HttpHeaders headers = new HttpHeaders();
headers.add("Host", "data.zz.baidu.com");
headers.add("User-Agent", "curl/7.12.1");
headers.add("Content-Length", "83");
headers.add("Content-Type", "text/plain");
HttpEntity entity = new HttpEntity(urlBuffer.toString(), headers);
String result = restTemplate.postForObject(api_url, entity, String.class);
System.out.println(result);
}
}
方式二:使用java自带的HttpClient进行推送
封装的post推送方法:
public String Post(String PostUrl, String[] Parameters) {
if (null == PostUrl || null == Parameters || Parameters.length == 0) {
return null;
}
String result = "";
PrintWriter out = null;
BufferedReader in = null;
try {
//建立URL之间的连接
URLConnection conn = new URL(PostUrl).openConnection();
//设置通用的请求属性
conn.setRequestProperty("Host", "data.zz.baidu.com");
conn.setRequestProperty("User-Agent", "curl/7.12.1");
conn.setRequestProperty("Content-Length", "83");
conn.setRequestProperty("Content-Type", "text/plain");
//发送POST请求必须设置如下两行
conn.setDoInput(true);
conn.setDoOutput(true);
//获取conn对应的输出流
out = new PrintWriter(conn.getOutputStream());
//发送请求参数
String param = "";
for (String s : Parameters) {
param += s + "\n";
}
out.print(param.trim());
//进行输出流的缓冲
out.flush();
//通过BufferedReader输入流来读取Url的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送post请求出现异常!" + e);
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
测试
@Test
public void testBuidu() {
String url = "http://data.zz.baidu.com/urls?site=www.xxx.com&token=xxx";//网站的服务器连接
String[] param = {
"http://www.xxx.com/detail/1",
"http://www.xxx.com/detail/2",
"http://www.xxx.com/detail/3"
};
String json = Post(url, param);//执行推送方法
System.out.println("结果是" + json); //打印推送结果
}
运行出现,如果推出成功,将会返回json数据如下:
{
"remain":4999997,
"success":3
}
其中remain就是我们上面提到的最多推送链接数。
如果推送失败,将会以json形式给出推送失败的链接及系相关信息。
后续可在百度站长平台中查看,推送结果。不过有延迟,大概第二天,出统计结果。
入口同样是:网站抓取——>链接提交