2014-12-21 85 views
1

即時通訊使用新的網站管理員工具api獲取我所有網站的抓取錯誤(+詳細信息)。 Unfort。它只給我1000,但我有10000.有沒有辦法讓他們所有人?網站管理員工具Api,獲取多於1000個抓取錯誤

這是我使用的代碼:

package main; 

import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; 
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; 
import com.google.api.client.googleapis.auth.oauth2.GoogleTokenResponse; 
import com.google.api.client.http.HttpTransport; 
import com.google.api.client.http.javanet.NetHttpTransport; 
import com.google.api.client.json.JsonFactory; 
import com.google.api.client.json.jackson2.JacksonFactory; 

import com.google.api.services.webmasters.Webmasters; 
import com.google.api.services.webmasters.Webmasters.Urlcrawlerrorssamples; 
import com.google.api.services.webmasters.model.SitesListResponse; 
import com.google.api.services.webmasters.model.UrlCrawlErrorsSample; 
import com.google.api.services.webmasters.model.UrlCrawlErrorsSamplesListResponse; 
import com.google.api.services.webmasters.model.WmxSite; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.util.Arrays; 
import java.util.ArrayList; 
import java.util.Collection; 
import java.util.List; 


public class WebmastersCommandLine { 

    private static String CLIENT_ID = "..."; 
    private static String CLIENT_SECRET = "..."; 

    private static String REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"; 

    private static String OAUTH_SCOPE = "https://www.googleapis.com/auth/webmasters.readonly"; 

    private static String PAGE_URL = "..."; 

    public static void main(String[] args) throws IOException { 
    HttpTransport httpTransport = new NetHttpTransport(); 
    JsonFactory jsonFactory = new JacksonFactory(); 

    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
     httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, Arrays.asList(OAUTH_SCOPE)) 
     .setAccessType("online") 
     .setApprovalPrompt("auto").build(); 

    String url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI).build(); 
    System.out.println("open URL:"); 
    System.out.println(" " + url); 
    System.out.println("code:"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String code = br.readLine(); 

    GoogleTokenResponse response = flow.newTokenRequest(code).setRedirectUri(REDIRECT_URI).execute(); 
    GoogleCredential credential = new GoogleCredential().setFromTokenResponse(response); 

    // Create a new authorized API client 
    Webmasters service = new Webmasters.Builder(httpTransport, jsonFactory, credential) 
     .setApplicationName("WebmastersCommandLine") 
     .build(); 

    Webmasters.Urlcrawlerrorssamples.List req2 = service.urlcrawlerrorssamples().list(PAGE_URL, "notFound", "web"); 

    try 
    { 
     UrlCrawlErrorsSamplesListResponse urlList = req2.execute(); 

     System.out.println("start"); 

     for(UrlCrawlErrorsSample sample : urlList.getUrlCrawlErrorSample()) 
     { 
      Webmasters.Urlcrawlerrorssamples.Get req3 = service.urlcrawlerrorssamples().get(PAGE_URL, sample.getPageUrl(), "notFound", "web"); 
      UrlCrawlErrorsSample details = req3.execute(); 

      System.out.println(sample.getPageUrl() + "," + details.getUrlDetails().getLinkedFromUrls()); 
     } 

    } 
    catch(IOException e) 
    { 
     System.out.println("An error occurred: " + e); 
    } 

    System.out.println("done"); 
    } 

} 

然而,這只是給了我1000個錯誤的列表,但我需要他們的所有10000。有沒有人知道一種方法來做到這一點?

回答

1

網站管理員工具API URL Crawl Errors Sample method返回1000個抓取錯誤的示例。這並不意味着要返回一個完整的列表(你可以從你的服務器日誌中編譯)。如果你想通過API獲取更多樣本,你可以做的一件事就是mark these errors as fixed,並在一天內再回來查看。然後它會從剩餘的抓取錯誤中生成一組樣本。

樣本的順序與UI中的順序相同,因此更重要的將是您看到的第一個。這意味着在您繼續前進時收益遞減,後來的抓取錯誤要麼與以前的抓取錯誤類似,要麼至少看起來不那麼重要。原來blog post有更多的優先級:

我們判斷此基礎上的多種因素,包括是否 或不包含在站點地圖,它的多少地方鏈接 從(如果有任何的網址那些也在您的網站上)以及URL 最近是否從搜索中獲得任何流量。

相關問題