啊! JSoup崩溃

时间:2013-01-28 13:34:52

标签: android dom jsoup

我想以道歉的方式为我的问题做准备 - 这将使这成为一个两部分的问题......双重道歉。 我正在努力与JSoup(再次)第一次道歉反复询问并且还没有充分学习 - 所以有人可以建议一些阅读超出常规搜索的东西,这将有助于我了解如何在每次尝试时解读DOM吗?

如果您仍然倾向于提供帮助,这一次,在我返回的文档中:

    <a href="/logitech-logitech-wireless-keyboard-k270-with-long-range-wireless-920-003051/info"><span id="priceProductQA1" class="productPrice">&#36;29.99</span></a>

我想抓住href和价格“29.99”。 我试过了

   doc = Jsoup.connect(srchStr).get();
    for (Element choices : doc.select("a:has(.productPrice)")){
      absHref = choices.attr("abs:href"); 
      String pricetxt = choices.text();

以及其他10种无效的方法。对我来说有什么更好的想法吗?

1 个答案:

答案 0 :(得分:0)

这是另一种解决方案:

for( Element element : doc.select("span.productPrice") ) // Select all 'span' tags with a 'productPrice' class and iterate over them
{
    final String price = element.text(); // save the price (= text of element)
    final String link = element.parent().absUrl("href"); // Get the 'a' tag (= parent of 'span' tag) and its absolute (!) URL

    // ... 
}

<强>解释

  1. 选择span代码,因为您可以轻松决定是否需要该代码(有一个类,而a没有)
  2. 从1中迭代每个元素。
  3. 获取元素的价格
  4. 选择span标记的父级,因为它包含所需的网址
  5. 选择绝对网址;如果您想要相对的,请使用attr("href")代替
  6. 顺便说一下。如果你是100%shure,这个网站上只有一个这样的元素,你可以用Element element = doc.select("span.productPrice").first();替换 for -Loop,然后是另外两行代码。