首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从android中的网站中提取文本

从android中的网站中提取文本
EN

Stack Overflow用户
提问于 2018-12-24 08:11:57
回答 3查看 6.6K关注 0票数 2

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

webView.getTitle()这样的东西会起作用,但不是网站的内容,有没有这么快的方法来获得这个,或者我应该怎么做呢?

专用信息

我需要得到信息表格的网站是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 "<html> <head></head> <body> #4d636f </body> </html> "

由此,我只需要正文中的文字,在这种情况下,一个颜色作为文本。

EN

回答 3

Stack Overflow用户

发布于 2018-12-24 17:10:42

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

例如:Java和Android的JSOUP API

更新

一步一步地指导解决上述问题

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

实现‘org.jThompson:jsoup:1.11.1’

  1. 将Internet权限添加到Android文件中,用于访问internet。

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

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

下面是示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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();
    }

}
票数 4
EN

Stack Overflow用户

发布于 2018-12-24 08:17:26

这种类型的过程被称为web擦除。你可以做更多的研究看看不同的方法。我建议的一种方法是从源获取HTML,并在DOM中搜索您想要的文本特有的任何标记。

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

您有要删除的源代码片段吗?

票数 0
EN

Stack Overflow用户

发布于 2018-12-24 08:18:14

当然,这里就是一个例子。P.S.我不熟悉javascript,纠正他的情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
webView.evaluateJavascript("return document.getElementById(your_id)", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        // value is your result
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53915588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文