从Android Studio中的网站提取文本

时间:2018-12-24 16:11:58

标签: android android-studio web

我有一个网站,该网站仅显示一行文本,我需要在android studio中提取文本形式,我希望将其作为字符串获取。我该怎么做?

诸如webView.getTitle()之类的方法会起作用,但是对于网站的内容而言,有没有这么快的方法来获取此信息,或者我应该怎么做?

特定信息

我需要获取信息表的站点是:

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

因此,我只需要正文中的文本,在这种情况下,颜色就是文本。

3 个答案:

答案 0 :(得分:2)

您可以使用任何Web Scraper / Crawler API从网站获取数据。

例如: JSOUP API For Java And Android

更新

分步指南以解决上述问题

  1. 将Jsoup依赖项添加到build.gradle的应用程序级别。
  

实现'org.jsoup:jsoup:1.11.1'

  1. 将Internet权限添加到Android Manifest文件中以进行Internet访问。
  

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

  1. 在您的应用中添加按钮和文本视图,以在单击按钮时从网站获取数据,并在文本视图上显示结果。

下面是示例代码:

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();
    }

}

答案 1 :(得分:0)

这种类型的过程称为网络清理。您还可以进行更多研究以了解不同的方法。我建议的一种方法是从源代码获取HTML,并在DOM中搜索所需文本唯一的任何标签。

通过获取HTML,您可以避免呈现整个页面(图像,javascript等)

您是否有要清除的源代码片段?

答案 2 :(得分:0)

当然这是一个例子。附言我不熟悉javascript,请针对您的情况对他进行纠正。

webView.evaluateJavascript("return document.getElementById(your_id)", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        // value is your result
    }
});