我有一个网站,它只显示一行文本,我需要在android中提取文本表单,我更愿意把它作为一个字符串。我该怎么做?
像webView.getTitle()
这样的东西会起作用,但不是网站的内容,有没有这么快的方法来获得这个,或者我应该怎么做呢?
专用信息
我需要得到信息表格的网站是:
"<html> <head></head> <body> #4d636f </body> </html> "
由此,我只需要正文中的文字,在这种情况下,一个颜色作为文本。
发布于 2018-12-24 17:10:42
您可以使用任何Web刮刀/Crawler API从网站获取数据。
更新
一步一步地指导解决上述问题
实现‘org.jThompson: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();
}
}
发布于 2018-12-24 08:17:26
这种类型的过程被称为web擦除。你可以做更多的研究看看不同的方法。我建议的一种方法是从源获取HTML,并在DOM中搜索您想要的文本特有的任何标记。
通过获取HTML,可以避免呈现整个页面(图像、javascript等)
您有要删除的源代码片段吗?
发布于 2018-12-24 08:18:14
当然,这里就是一个例子。P.S.我不熟悉javascript,纠正他的情况。
webView.evaluateJavascript("return document.getElementById(your_id)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
// value is your result
}
});
https://stackoverflow.com/questions/53915588
复制相似问题