我正在设计一个Android应用程序,它将显示附近咖啡店的详细信息...我需要从谷歌获取此内容。我在谷歌搜索" COFFEE NEAR LOCATION",这个位置确定由应用程序本身。我知道如何获取该网站的源代码并采取我需要的内容,但它花了太多时间来处理和该页面的源代码(谷歌源代码)太大..所以是有任何替代方法来做这件事..从谷歌获取这个特定的内容..请帮助我。
答案 0 :(得分:1)
我建议您使用Google-Places-API。它允许您查询您所在位置附近的地点,并获取您使用谷歌搜索时所获得的所有信息。它很容易使用。如果您想搜索任何位置,您需要执行一个类似于此的HTTP请求
https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters
示例查询看起来像这样
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&type=restaurant&name=cruise&key=YOUR_API_KEY
和json或XML中的响应,它只包含您要求的信息。参数包括location
,radius
,keyword
,language
,opennow
,type
等等。但建议您访问该链接,它可以帮助您入门。 API密钥是免费的,除非您有大量流量(每天数千个请求)
答案 1 :(得分:0)
使用jsoup,简单快捷。您可以使用以下方法查询Google并获取生成的链接。
public static final String URL_FORMAT = "http://www.google.com/search?&q=%s&num=%d";
public static final String LINK_SELECTOR = "div.g>h3>a";
public static final Pattern GOOGLE_RESULTS_URL_PATTERN = Pattern.compile("^.*q=(.*?)&.*$");
public static List<Link> search(String phrase, int number){
List<Link> results = new ArrayList<>();
String url;
Elements links;
// Build and encode url for Google search
try {
url = String.format(URL_FORMAT, URLEncoder.encode(phrase, Constants.CHARSET), number);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
// Connect to Google and fetch the results
try {
links = Jsoup
.connect(url)
.userAgent(Constants.USER_AGENT)
.timeout(Constants.FETCH_TIMEOUT)
.get()
.select(LINK_SELECTOR);
} catch (IOException e) {
e.printStackTrace();
return null;
}
// Iterate through links and add them to the list
for (Element link : links) {
String title = link.text();
url = link.absUrl("href");
Matcher matcher = GOOGLE_RESULTS_URL_PATTERN.matcher(url);
if(matcher.matches()) {
try {
url = URLDecoder.decode(matcher.group(1), Constants.CHARSET);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
continue;
}
} else {
continue;
}
results.add(new Link(title, url));
}
return results;
}
此外,jsoup也是一个很好的tutorial。