Utilice jsoup para extraer texto de la clase 'form' con datos de página variable

Primero poste aquí así que haré mi mejor para guardar esto específico. He estado usando Jsoup para extraer datos de una serie de páginas web para llevar a una aplicación utitity. He encontrado una página que actualiza los datos dinámicamente basados ​​en la selección de usuarios de un cuadro desplegable. Puedo ver los datos cuando examino el html en Chrome, sin embargo no puedo extraerlo. Puedo extraer todos los elementos del texto alrededor de él, pero cualquier cosa dinámicamente generada no saldrá.

La página que estoy mirando tiene la siguiente clase de formulario, disculpas por el envoltorio, no pude deshacerse de él.

<form class="variations_form cart" method="post" enctype="multipart/form-data" data-product_id="8044" data-product_variations="[{&quot;variation_id&quot;:8047,&quot;variation_is_visible&quot;:true,&quot;variation_is_active&quot;:true,&quot;is_purchasable&quot;:true,&quot;display_price&quot;:19.70,&quot;display_regular_price&quot;:19.70,&quot;attributes&quot;:{&quot;attribute_size&quot;:&quot;500g&quot;},&quot;image_src&quot;:&quot;http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/08\/LABELS_500g-FOOD-Vann-475x652.png&quot;,&quot;image_link&quot;:&quot;http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/08\/LABELS_500g-FOOD-Vann.png&quot;,&quot;image_title&quot;:&quot;LABELS_500g-FOOD Vann&quot;,&quot;image_alt&quot;:&quot;&quot;,&quot;image_srcset&quot;:&quot;http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/08\/LABELS_500g-FOOD-Vann-746x1024.png 746w, http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/08\/LABELS_500g-FOOD-Vann-475x652.png 475w, http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/08\/LABELS_500g-FOOD-Vann.png 1063w&quot;,&quot;image_sizes&quot;:&quot;(max-width: 475px) 100vw, 475px&quot;,&quot;price_html&quot;:&quot;<span class=\&quot;price\&quot;><span class=\&quot;amount\&quot;>$19.70<\/span><\/span>&quot;,&quot;availability_html&quot;:&quot;&quot;,&quot;sku&quot;:&quot;FOOD-Vanilla-500&quot;,&quot;weight&quot;:&quot;.5 kg&quot;,&quot;dimensions&quot;:&quot;&quot;,&quot;min_qty&quot;:1,&quot;max_qty&quot;:&quot;&quot;,&quot;backorders_allowed&quot;:false,&quot;is_in_stock&quot;:true,&quot;is_downloadable&quot;:false,&quot;is_virtual&quot;:false,&quot;is_sold_individually&quot;:&quot;no&quot;,&quot;variation_description&quot;:&quot;<p>500g<\/p>\n&quot;},{&quot;variation_id&quot;:8045,&quot;variation_is_visible&quot;:true,&quot;variation_is_active&quot;:true,&quot;is_purchasable&quot;:true,&quot;display_price&quot;:13.50,&quot;display_regular_price&quot;:13.50,&quot;attributes&quot;:{&quot;attribute_size&quot;:&quot;1kg&quot;},&quot;image_src&quot;:&quot;http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_1kg-FOOD-Van-475x652.png&quot;,&quot;image_link&quot;:&quot;http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_1kg-FOOD-Van.png&quot;,&quot;image_title&quot;:&quot;LABELS_1kg-FOOD Van&quot;,&quot;image_alt&quot;:&quot;&quot;,&quot;image_srcset&quot;:&quot;http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_1kg-FOOD-Van-746x1024.png 746w, http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_1kg-FOOD-Van-475x652.png 475w, http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_1kg-FOOD-Van.png 1063w&quot;,&quot;image_sizes&quot;:&quot;(max-width: 475px) 100vw, 475px&quot;,&quot;price_html&quot;:&quot;<span class=\&quot;price\&quot;><span class=\&quot;amount\&quot;>$13.50<\/span><\/span>&quot;,&quot;availability_html&quot;:&quot;&quot;,&quot;sku&quot;:&quot;FOOD-Vanilla-1kg&quot;,&quot;weight&quot;:&quot;1 kg&quot;,&quot;dimensions&quot;:&quot;&quot;,&quot;min_qty&quot;:1,&quot;max_qty&quot;:&quot;&quot;,&quot;backorders_allowed&quot;:false,&quot;is_in_stock&quot;:true,&quot;is_downloadable&quot;:false,&quot;is_virtual&quot;:false,&quot;is_sold_individually&quot;:&quot;no&quot;,&quot;variation_description&quot;:&quot;<p>1kg<\/p>\n&quot;},{&quot;variation_id&quot;:8046,&quot;variation_is_visible&quot;:true,&quot;variation_is_active&quot;:true,&quot;is_purchasable&quot;:true,&quot;display_price&quot;:199.95,&quot;display_regular_price&quot;:199.95,&quot;attributes&quot;:{&quot;attribute_size&quot;:&quot;3kg&quot;},&quot;image_src&quot;:&quot;http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_3kg-FOOD-Van-475x652.png&quot;,&quot;image_link&quot;:&quot;http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_3kg-FOOD-Van.png&quot;,&quot;image_title&quot;:&quot;LABELS_3kg-FOOD Van&quot;,&quot;image_alt&quot;:&quot;&quot;,&quot;image_srcset&quot;:&quot;http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_3kg-FOOD-Van-746x1024.png 746w, http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_3kg-FOOD-Van-475x652.png 475w, http:\/\/www.sourcewebsite.com\/wp-content\/uploads\/2014\/09\/LABELS_3kg-FOOD-Van.png 1063w&quot;,&quot;image_sizes&quot;:&quot;(max-width: 475px) 100vw, 475px&quot;,&quot;price_html&quot;:&quot;<span class=\&quot;price\&quot;><span class=\&quot;amount\&quot;>$199.95<\/span><\/span>&quot;,&quot;availability_html&quot;:&quot;&quot;,&quot;sku&quot;:&quot;FOOD-Vanilla-3kg&quot;,&quot;weight&quot;:&quot;3 kg&quot;,&quot;dimensions&quot;:&quot;&quot;,&quot;min_qty&quot;:1,&quot;max_qty&quot;:&quot;&quot;,&quot;backorders_allowed&quot;:false,&quot;is_in_stock&quot;:true,&quot;is_downloadable&quot;:false,&quot;is_virtual&quot;:false,&quot;is_sold_individually&quot;:&quot;no&quot;,&quot;variation_description&quot;:&quot;<p>3kg<\/p>\n&quot;}]"> <table class="variations" cellspacing="0"> <tbody> <tr> <td class="label"> <label for="size">Size</label> </td> <td class="value"> <select id="size" class="" name="attribute_size" data-attribute_name="attribute_size"> <option value="">Choose an option</option> <option value="500g">500g</option> <option value="1kg" selected="selected">1kg</option> <option value="3kg">3kg</option> </select><a class="reset_variations" href="#" style="visibility: visible; display: block;">Clear selection</a> </td> </tr> </tbody> </table> <div class="angelleye_buton_box_relative" style="position: relative;"> <div class="single_variation_wrap"> <div class="woocommerce-variation-description" style="border: 1px solid transparent;"> <p>1kg</p> </div> <div class="single_variation"><span class="price"><span class="amount selectorgadget_selected">$13.50</span></span> </div> <div class="variations_button"> <div class="quantity"> <input type="number" step="1" name="quantity" value="1" title="Qty" class="input-text qty text" size="4" min="1"> </div> <button type="submit" class="single_add_to_cart_button button alt">Add to basket</button> <input type="hidden" name="add-to-cart" value="8044"> <input type="hidden" name="product_id" value="8044"> <input type="hidden" name="variation_id" class="variation_id" value="8045"> </div> </div> <div class="blockUI blockOverlay angelleyeOverlay" style="display:none;z-index: 1000; border: none; margin: 0px; padding: 0px; width: 100%; height: 100%; top: 0px; left: 0px; opacity: 0.6; cursor: default; position: absolute; background: url(http://www.sourcewebsite.com/wp-content/plugins/woocommerce/assets/images/select2-spinner.gif) 50% 50% / 16px 16px no-repeat rgb(255, 255, 255);"></div> </div> </form> 

Estoy tratando de extraer el precio "13.50" de la div inferior.

 <div class="single_variation"><span class="price"><span class="amount selectorgadget_selected">$13.50</span></span> </div> 

Mi código está abajo:

  private class ParseFoodPriceURL extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... strings) { StringBuffer buffer = new StringBuffer(); try { Document doc = Jsoup.connect(strings[0]).get(); Elements foodPrice = doc.select("div.single_variation_wrap > div.single_variation"); String priceTextSelection = foodPrice.text(); buffer.append("Price: $" + priceTextSelection); } catch (Throwable t) { t.printStackTrace(); } return buffer.toString(); } 

JSoup no es un navegador, por lo que no interpretará y ejecutará JavaScript. Si el contenido de un sitio web se genera dinámicamente, no puede utilizar JSoup directamente. Dos opciones vienen a mi mente:

  1. Identificar las llamadas AJAX directamente y obtener la información a través de estas llamadas. A menudo la respuesta no es HTML sino JSON. Así que puede que necesite otras bibliotecas de análisis. Esta opción es rápida, pero es necesario investigar y comprender cómo funciona la página web.

  2. Utilice el webdriver del selenio con un motor verdadero del hojeador (phantomjs por ejemplo). Esto cargará el Web site como un browser verdadero pero usted puede tener acceso a su contenido similar a JSoup. Esto es relativamente fácil de programar, pero lento y utiliza una gran cantidad de recursos. Si se ejecuta dentro de Android, esto puede ser demasiado. De todos modos para Android la herramienta adecuada para esto parece ser Selenoid .

  • Manipulación de datos en webs en Android
  • Jsoup obtiene elemento en value = ""
  • El uso de un HashMap para almacenar grandes cantidades de datos está ralentizando mi aplicación de Android, ¿hay otras opciones?
  • Optimización de WebViews de Google Reader en optimización de Android
  • cómo resolver el error jsoup: no se puede encontrar una ruta de certificación válida a la dirección solicitada
  • Usando jsoup con fuerza de cierre proguard cerrar
  • Android - Parse JS generó urls con JSOUP
  • HTML a texto con formato
  • Analizando HTML con Jsoup y eliminando spans con cierto estilo
  • ¿Hay una manera de acelerar Jsoup.parse ()?
  • ¿Cuál es la mejor manera de raspar este código HTML para una aplicación para Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.