Извлечь текст с сайта в Android Studio - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть веб-сайт, который показывает только одну строку текста, которая мне нужна для извлечения текстовой формы в Android Studio, я бы предпочел получить его в виде строки.Как мне это сделать?

Что-то вроде webView.getTitle() будет работать, но для контента сайта, есть ли такой быстрый способ получить это или как мне еще это сделать?

конкретная информация

сайт, мне нужно получить информационную форму:

 "<html> <head></head> <body> #4d636f </body> </html> "

из этого мне нужен только текст в теле, в данном случаецвет как текст.

Ответы [ 3 ]

0 голосов
/ 24 декабря 2018

Конечно, вот пример.PS Я не знаком с javascript, поправьте его для своего случая.

webView.evaluateJavascript("return document.getElementById(your_id)", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        // value is your result
    }
});
0 голосов
/ 25 декабря 2018

Вы можете использовать любой Web Scraper / Crawler API для извлечения данных с веб-сайта.

Например: JSOUP API для Java и Android

Обновление

Пошаговое руководство для решения указанной проблемы

  1. Добавьте зависимость Jsoup к уровню приложения вашего build.gradle.

реализация 'org.jsoup: jsoup: 1.11.1'

Добавить интернет-разрешение в файл Android-манифеста для доступа в интернет.

<uses-permission android:name="android.permission.INTERNET" />

Добавление кнопки и текстового представления в вашем приложении для получения данных с веб-сайта по нажатию кнопки и отображения результата в текстовом представлении.

Ниже приведен пример кода:

public class MainActivity extends AppCompatActivity {

    private TextView result;
    private Button fetch;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        result = (TextView) findViewById(R.id.result);
        fetch = (Button) findViewById(R.id.fetch);
        fetch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getBodyText();
            }
        });
    }
    private void getBodyText() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                final StringBuilder builder = new StringBuilder();

                try {
                    String url="http://www.example.com";//your website url
                    Document doc = Jsoup.connect(url).get();

                    Element body = doc.body();
                    builder.append(body.text());

                } catch (Exception e) {
                    builder.append("Error : ").append(e.getMessage()).append("\n");
                }

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        result.setText(builder.toString());
                    }
                });
            }
        }).start();
    }

}
0 голосов
/ 24 декабря 2018

Этот тип процесса известен как очистка сети.И вы могли бы сделать больше исследований, чтобы увидеть разные методы.Один метод, который я бы предложил, это получить HTML из источника и выполнить поиск в DOM по любым тегам, уникальным для текста, который вы хотите.

Получая HTML, вы избегаете рендеринга всей страницы (images, javascript, ect ..)

У вас есть фрагмент исходного кода, который вы хотите удалить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...