Skocz do zawartości
SanFable

Pobieranie danych z strony i parsowanie

    Rekomendowane odpowiedzi

    Cubaza

    Zainteresuj się taką biblioteką jak JSOUP. Jest to parser html. Wysyłasz request do strony a potem parsujesz sobie po znacznikach, id, nazwie, czym chcesz. Dzięki temu bez problemu pobierzesz to co chcesz. Używanie substringa do tego nie jest najlepszym rozwiązaniem.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    laney

    Przy odpaleniu aplikacji opartej na bibliotece JSOUP wywala błąd w logcat:

    java.lang.NoClassDefFoundError: org.jsoup.Jsoup

    Ktoś wie co na to poradzić?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    senega

    A pobrałeś bibliotekę i dodałeś do swojej aplikacji?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    laney

    pobrałam i dodałam.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    senega

    Zrobiłem test. Pobrałem bibliotekę, wrzuciłem do katalogu lib projektu, zrobiłem clean na projekcie. Dodałem kod i wszystko działa poprawnie.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    laney

    Zrobiłam od początku, tamtego błędu mi nie wywala, za to jest nowy, fatal exception: main...

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    senega

    a może tak coś więcej?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    laney

    [ATTACH]74770[/ATTACH]

    Zrobiłam screena może coś bardziej będzie wiadomo.

    Edytowane przez foxpl1
    pamiętaj o dodawaniu grafiki w spoiler

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Zwroc uwage na blad ClassCastException w MainActivity bo cos zle rzutujesz..

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    laney

    Napisałam kod z biblioteką jsoup, chcę teraz ze strony html te dane przesortować, ale jak wpisuję do editText jakieś hasło, to wywala mi apkę, albo ładuje ją ale nic nie wyświetla w TextView. Czy ja źle coś deklaruję? Czy chodzi o ("div [class=text]") ?

    [spoiler]
    package com.example.aaaa;
    
    import java.io.IOException;
    
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpUriRequest;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;
    
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.select.Elements;
    
    import android.util.Log;
    
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.AsyncTask;
    import android.os.Bundle;
    
    import android.text.Html;
    import android.text.method.ScrollingMovementMethod;
    import android.view.View;
    import android.view.View.OnClickListener;
    
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
    EditText editText;
    Button button;
       String data;
    
       private String URL;
       private String URL1;
       TextView textView;
    
       ProgressDialog mProgressDialog;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
    	setContentView(R.layout.activity_main);
    
    
    editText = (EditText) findViewById(R.id.editText1);
    button = (Button) findViewById(R.id.button1);
    textView = (TextView) findViewById(R.id.textView1);
    
    textView.setMovementMethod(new ScrollingMovementMethod());
    
    
    URL="http://www.przepisy.net/szukaj/?q=;"; 
    
    
    button.setOnClickListener(new OnClickListener(){
    	@Override
    	public void onClick(View v){
    		data = editText.getText().toString();
    		URL1 = URL + data;
    		Log.v("URL", URL1);
    
    		new SearchResult().execute();
    	}
    }
    );
    }
    		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 resultText;
    
    			@Override
    			protected void onPreExecute (){
    				super.onPreExecute();
    				mProgressDialog = new ProgressDialog(MainActivity.this);
    
    
    				mProgressDialog.setTitle("ładuję przepisy...");
    				mProgressDialog.setMessage("prosze czekac...");
    				mProgressDialog.setIndeterminate(false);
    				mProgressDialog.show();
    
    
    			}
    
    			@Override
    			protected Void doInBackground(Void... params){
    				try{
    					Document document = Jsoup.connect(URL1).get();
    
    
    
    
    					Elements description2 = document.select("div [class=text]");
    
    
    					Log.v("Data3", description2.toString());
    					resultText = description2.toString();
    				}
    				catch (Exception e){
    					e.printStackTrace();
    				}
    				return null;
    			}
    			@Override
    			protected void onPostExecute(Void result)
    			{
    				textView.setText(Html.fromHtml(resultText));
    				mProgressDialog.dismiss();
    					}}}
    
    
    
    
    
    
    [/spoiler]
    
    

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x