【问题标题】:Extract text from website in android studio从android studio中的网站提取文本
【发布时间】:2019-05-23 17:51:47
【问题描述】:

我有一个网站,它只显示一行文本,我需要在 android studio 中提取文本表单,我更愿意将它作为字符串获取。我该怎么做?

诸如webView.getTitle() 之类的东西会起作用,但是对于网站的内容,有没有这样一种快速的方法来获得它或者我应该怎么做?

具体信息

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

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

从这里我只需要正文中的文本,在这种情况下,颜色作为文本。

【问题讨论】:

标签: android android-studio web


【解决方案1】:

这种类型的过程称为网页清理。你可以做更多的研究来看看不同的方法。我建议的一种方法是从源代码获取 HTML 并在 DOM 中搜索您想要的文本独有的任何标签。

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

您是否有要清除的源代码的 sn-p?

【讨论】:

  • 嗨,我想从中获取信息的网站只是:“ #4d636f ”。我只需要彩色文本。我应该在这里使用什么代码来清理它?
  • 抱歉回复晚了。试试 document.getElementByTagName("body").innerText
【解决方案2】:

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

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

【讨论】:

  • 我试过了,对于 getElement 我使用了“getElementByTagName("body")”,因为我的网站只有:“ #4d636f ”。但这给了我一个空值。我应该使用什么 java?
【解决方案3】:

您可以使用任何 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。

&lt;uses-permission android:name="android.permission.INTERNET" /&gt;

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

}

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2021-11-29
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多