1. 程式人生 > >百度站長平臺提交連結-主動推送

百度站長平臺提交連結-主動推送

作為站長,為了提高搜尋率,也就是讓搜尋引擎更容易的發現自己的網站,我們可以向相應的搜尋引擎連結提交的方式,告知搜尋引擎。
下面主要展示像百度主動連結提交的方式。
1.百度站長入口
http://zhanzhang.baidu.com/linksubmit/index
網站提高了很多站長所需的東西。你一看便知。

2.登入後:網站抓取——>連結提交
你會發現,百度提供了多種連結提交的方式:
自動提交:
主動推送(實時)、自動推送、 sitemap
手動提交:。

下面主要演示通過java程式碼進行主動推送。

第一步:主動推送介面

來到主動推送頁面,我們可以看到如下頁面展示:
主動推送

第二步:如何推送

給出的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需要我們在表頭繼續設定。

第三步:java程式進行推送

方式一:利用Spring RestTemplate進行推送

RestTemplate是Spring提供的用於訪問Rest服務的客戶端, RestTemplate提供了多種便捷訪問遠端Http服務的方法,也就是get、post、put、delete等等請求,都能實現,這裡不做詳細介紹。
如果你選擇這種方式,你得有過java框架相關開發經驗,用過spring,其中具體配置就不給出了。
Maven引入Spring

        <dependency>
            <groupId
>
org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.5.RELEASE</version> </dependency>

這樣,RestTemplate相關的類庫就進來了。
在Bean中配置RestTemplate

    <bean 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<String> 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<String> entity = new HttpEntity<String>(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形式給出推送失敗的連結及系相關資訊。

後續可在百度站長平臺中檢視,推送結果。不過有延遲,大概第二天,出統計結果。
入口同樣是:網站抓取——>連結提交

如有疑問請留意,希望對你有所幫助。