2015-11-17 2 views
1

Привет, я был в этом вопросе на пару дней. В рамках проекта мне нужно использовать JSOUP для вывода названий продуктов и цен с этого сайта eBuyer Search обратно в мое приложение.Скремблирование информации с сайта и в список?

Мне было интересно о 3 проблемах, в то время как код возвращает весь заголовок h1 для названия продукта и всех цен на этой странице в качестве предложения.

  1. Есть ли способ, которым я могу анализировать информацию в Android, чтобы возвращать элемент за раз и перечислить его, а также имя продукта, а не блок текста.
  2. После того, как указана правильная информация, как я могу прослушать конкретный щелчок на этом продукте и сохранить его в переменной?

Большое спасибо за любую помощь,

private class Title extends AsyncTask<Void, Void, Void> { 

    String h1,h3; 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      // Connect to the web site 
      Document element = Jsoup.connect("http://www.ebuyer.com/search?q=" + search).get(); 

      h1 = element.body().getElementsByTag("h2").text(); 

      h3 = element.body().getElementsByTag("h1").text(); 

     } catch (IOException e) { 
      e.printStackTrace(); 

     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     // Set title into TextView 
     TextView textView = (TextView) findViewById(R.id.textView3); 
     textView.setText(h3); 

     TextView textView2 = (TextView) findViewById(R.id.textView2); 
     textView2.setText(h1); 
    } 
} 

Код выше метод я использую JSOUP

изображение ниже, что происходит, когда я искать товар.

enter image description here

ответ

1

Вот код, чтобы получить название и цену каждого продукта

Document doc = Jsoup.connect("http://www.ebuyer.com/search?q=" + search).timeout(10000).userAgent("Mozilla/5.0").get(); 
Elements sections = doc.select("div.listing-product"); 
for (Element section : sections) { 
    String title = section.select("h3.listing-product-title").text(); 
    String price = section.select("p.price").text(); 
    System.out.println("Title : " + title); 
    System.out.println("Price : " + price); 
} 

Теперь используйте Listview, чтобы показать каждый продукт, когда элемент списка нажмите означает, что при выборе продукта вы можете делать все, что вы хотите.
вы можете узнать о ListView из http://www.vogella.com/tutorials/AndroidListView/article.html
http://developer.android.com/guide/topics/ui/layout/listview.html

+0

Спасибо вам попробовать это. – Rueben

0

Прежде всего, вы можете точно настроить таргетинг элементов. На упомянутой странице каждый продукт содержится внутри элемента с классом listing-product. В этом случае заголовок обозначается классом listing-product-title, тогда как цена находится в элементе класса listing-price.

Во-вторых, методы getElementsBy... возвращают объект Elements, который по существу равен ArrayList всех совпадений. Вы должны перебирать список и обрабатывать каждый элемент отдельно.

Пример:

Document element = Jsoup.connect("http://www.ebuyer.com/search?q=" + search).get(); 
Elements products = element.body().getElementsByClass("listing-product"); 
for(Element product : products){ 
    String title = product.getElementsByClass("listing-product-title").text(); 
    String price = product.getElementsByClass("listing-product-price").text(); 
} 

Что вы делаете с деталями до вас. Я бы создал класс POJO для хранения данных вашего продукта и добавил все ваши продукты в ArrayList. Затем вы можете использовать список для поддержки адаптера для ListView или GridView или что-то в этом роде.

Смежные вопросы