Android - Варианты получения данных с веб-сайта?(HTML) - PullRequest
1 голос
/ 29 сентября 2010

Мне было интересно, как лучше всего использовать Android для получения информации со страницы HTML, размещенной в Интернете?

Например, я хотел бы получить текст со следующей страницы на страниценачало каждого дня:

http://www.met.ie/forecasts/sea-area.asp

Я загружаю и анализирую файлы XML, но никогда раньше не пытался анализировать информацию из файла типа HTML.

Естьесть собственный способ анализа информации, которую я хочу?

Или мне нужна сторонняя библиотека?

Или мне нужно изучить скриншот экрана?

Ответы [ 3 ]

2 голосов
/ 29 сентября 2010

Если вы анализируете HTML, независимо от того, как вы это делаете, вы просматриваете экран. Методы запускают гамбит из регулярных выражений в сторонние библиотеки, такие как jTidy. Единственная проблема в том, работает ли jTidy на Android? Я не знаю. Вам придется исследовать это.

Я бы предложил использовать регулярные выражения, скомпилировать их и кэшировать объект Pattern для производительности.

Если вы не можете получить надлежащий API веб-сервиса для нужных вам данных, вы всегда рискуете, чтобы автор изменил макет, переместил данные на вас и нарушил ваш код. Вот почему скрининг экрана, как правило, не одобряется и используется только в качестве последнего шага.

2 голосов
/ 09 марта 2011

Если вы не хотите идти сторонним путем - вы можете использовать веб-просмотр и добавить в него javascript для извлечения необходимой информации.

Пример код:

WebView webview = new WebView(context);

webView.addJavascriptInterface(new jsInterface() {
           public void parseForcast(String html){
              // do something with html
           }
        }, "Foo");


webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url){
  if (url.equals(FORECAST_URL){
     loadUrl("javascript:window.Foo.parseForecast(document.getElementById('content').innerHTML);");
  }
});

webview.loadUrl(FORECAST_URL);
1 голос
/ 29 сентября 2010

Есть ли собственный способ анализа информации, которую я хочу?

Нет.

Или мне нужна сторонняя библиотека?

Да.

Или мне нужно изучить соскоб экрана?

То, что вы хотите сделать, соответствует термину "соскоб экрана" какон используется в отношении веб-сайтов.Как я уже писал в предыдущем вопросе на эту тему , для разбора HTML вы используете HTML-парсер.Существует несколько открытых , и вполне вероятно, что один или несколько будут работать на Android с небольшими изменениями, если таковые имеются.

...