当我在 google.com 上搜索“google”时,底部会建议一些相关的搜索查询:
google 上没有相关链接。搜索关键字的用户数量。谷歌提供了这样的api吗?
当我在 google.com 上搜索“google”时,底部会建议一些相关的搜索查询:
google 上没有相关链接。搜索关键字的用户数量。谷歌提供了这样的api吗?
不,谷歌不喜欢人们使用自动查询来收集数据。您需要制作一个收割机 - 最好的解决方案 - 为每个查询使用 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();
}