我已經實現了一個基本的東西。用戶通過我的應用程序搜索疾病,結果包含症狀,解決方案等。 我所做的是使用WebView,完整的網站是在webview中。但我的要求是隻顯示搜索結果。 沒有API。我必須從網站HTML源代碼中完成。Android中的HTML解析網站源代碼
我怎麼能這樣做?您的建議表示讚賞。 網站使用:www.webmd.com
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText = (EditText) findViewById(R.id.editText1);
button = (Button) findViewById(R.id.button1);
webView1 = (WebView) findViewById(R.id.webView1);
URL = "http://www.webmd.com/search/search_results/default.aspx?query=";
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
data = editText.getText().toString();
URL1 = URL + data.replaceAll(" ", "%20");
Log.v("URL",URL1);
// URL = URL+editText.getText().toString();
if(data.trim().length()>0){
new SearchResult().execute();
// webView1.loadUrl(URL1);
/*Intent i = new Intent(MainActivity.this, com.medicaldictonery.View.class);
i.putExtra("url", URL1.trim());
startActivity(i);*/
}
}
});
}
public String getServerDataGET(String targetURL)
throws ClientProtocolException, IOException {
try {
HttpClient client = new DefaultHttpClient();
HttpUriRequest request = new HttpGet(targetURL);
Log.v("link", targetURL);
HttpResponse response = client.execute(request);
String responseBody = "";
HttpEntity entity = response.getEntity();
if (entity != null) {
responseBody = EntityUtils.toString(entity);
Log.v("test", responseBody);
}
return responseBody;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private class SearchResult extends AsyncTask<Void, Void, Void>{
String result1;
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(MainActivity.this);
mProgressDialog.setTitle("WebMD");
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
try {
// Connect to the web site
result1=getServerDataGET(URL1);
Log.e("document",result1);
Document document = Jsoup.connect(URL1).get();
//Log.e("document",getServerDataGET(URL1));
// Using Elements to get the Meta data
Elements description = document
.select("div[id=searchResults]");
// Locate the content attribute
result1 = description.attr("searchResults");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Set description into TextView
mProgressDialog.dismiss();
webView1.loadData(result1, "text/html; charset=UTF-8", null);
}
}
}
你或你的公司與webMD有協議嗎?如果你不這樣做,那麼這將違反他們的使用條款。 – RocketSpock
它不是一個現場項目。我是一名實習生,我的任務是獲得選拔。 – user3021522
好的。然後我會稍微發佈一些代碼。暫時看一下'WebView.setChromeClient()'和'WebView.setWebViewClient()'。其中一個應該有一個方法,您可以重載,以便在加載時從頁面獲取HTML。 – RocketSpock