2015-02-10 93 views

回答

2

不,谷歌不喜歡人們使用自動查詢來收集數據。您需要製作一臺收割機和 - 最好的解決方案 - 爲每個查詢使用http代理,因爲您遲早會被谷歌攔截。你可以使用Selenium框架。這裏是我的例子(沒有代理):

import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.htmlunit.HtmlUnitDriver; 

public class SeleniumTest { 
    public static void main(String[] args) throws Exception { 

     // The Firefox driver supports javascript 

     WebDriver driver = new FirefoxDriver(); 

     // WebDriver driver = new HtmlUnitDriver(); 
     // ((HtmlUnitDriver) driver).setJavascriptEnabled(true); 

     // Go to the Google Suggest home page 
     driver.get("https://www.google.com/"); 

     // Enter the query string "Cheese" 
     WebElement query = driver.findElement(By.name("q")); 
     query.sendKeys("Cheese"); 

     // Sleep until the div we want is visible or 5 seconds is over 
     long end = System.currentTimeMillis() + 5000; 
     while (System.currentTimeMillis() < end) { 
      WebElement resultsDiv = driver.findElement(By.className("sbqs_c")); 

      // If results have been returned, the results are displayed in a 
      // drop down. 
      if (resultsDiv.isDisplayed()) { 
       break; 
      } 
     } 

     // And now list the suggestions 
     List<WebElement> allSuggestions = driver.findElements(By 
       .className("sbqs_c")); 

     for (WebElement suggestion : allSuggestions) { 
      System.out.println(suggestion.getText()); 
     } 

     driver.quit(); 
    }