我有一个网站,该网站仅显示一行文本,我需要在android studio中提取文本形式,我希望将其作为字符串获取。我该怎么做?
诸如webView.getTitle()
之类的方法会起作用,但是对于网站的内容而言,有没有这么快的方法来获取此信息,或者我应该怎么做?
特定信息
我需要获取信息表的站点是:
"<html> <head></head> <body> #4d636f </body> </html> "
因此,我只需要正文中的文本,在这种情况下,颜色就是文本。
答案 0 :(得分:2)
您可以使用任何Web Scraper / Crawler API从网站获取数据。
例如: JSOUP API For Java And Android
更新
分步指南以解决上述问题
实现'org.jsoup:jsoup:1.11.1'
<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();
}
}
答案 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
}
});