如何过滤网页并使用android获取所需的数据

时间:2016-02-26 07:03:41

标签: java android parsing

我正在设计一个Android应用程序,它将显示附近咖啡店的详细信息...我需要从谷歌获取此内容。我在谷歌搜索" COFFEE NEAR LOCATION",这个位置确定由应用程序本身。我知道如何获取该网站的源代码并采取我需要的内容,但它花了太多时间来处理和该页面的源代码(谷歌源代码)太大..所以是有任何替代方法来做这件事..从谷歌获取这个特定的内容..请帮助我。

2 个答案:

答案 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中的响应,它只包含您要求的信息。参数包括locationradiuskeywordlanguageopennowtype等等。但建议您访问该链接,它可以帮助您入门。 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