【问题标题】:Scraping an image source nested within several elements in JSoup在 JSoup 中抓取嵌套在多个元素中的图像源
【发布时间】:2017-07-29 06:11:08
【问题描述】:

过去几天我一直在使用 JSoup 来尝试从亚马逊上为我的 Android 应用程序项目抓取一些数据,并且我已经查看了 JSoup 网站上的所有教程,以及这里的许多问题在堆栈溢出本身。然而,尽管我已经尝试了一切并且我花费了所有时间来尝试从 img 元素中提取源属性,但似乎没有任何效果。

此处列出了来自网站的 HTML 代码,我要提取的是类名为“a-dynamic-image a-stretch-horizo​​ntal”的 img 元素的源属性:

<ul class="a-unordered-list a-nostyle a-horizontal list maintain-height">
<li class="image item itemNo0 selected maintain-height"><span class="a-list-item">
    <span class="a-declarative" data-action="main-image-click" data-main-image-click="{}">
        <div id="imgTagWrapperId" class="imgTagWrapper">
            <img alt="MSI R9 390 GAMING 8G Graphics Card" src="(source URL that I want to extract)"

" data-old-hires="https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SL1500_.jpg"  class="a-dynamic-image  a-stretch-horizontal" id="landingImage" data-a-dynamic-image="{&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX450_.jpg&quot;:[338,450],&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX425_.jpg&quot;:[319,425],&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX466_.jpg&quot;:[350,466],&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX355_.jpg&quot;:[266,355],&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX522_.jpg&quot;:[392,522]}" style="max-width:522px;max-height:392px;">
            </div>
        </span>
    </span></li>

我在Android Studio中的代码如下:

Document doc = Jsoup.connect(url).get();
Element link= doc.select("ul.a-unordered-list a-nostyle a-horizontal list maintain-height").select("span.a-list-item span.a-declarative").select("span.a-declarative")
                   .select("div.imgTagWrapper").select("img.a-dynamic-image  a-stretch-horizontal").first();
String imageSRC = link.attr("src");

我很想知道我在这里缺少什么,因为我承认我仍然对 Java 非常缺乏经验,尤其是 JSoup。任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: java android html jsoup


    【解决方案1】:

    试试这个。

    Element link= doc.select("ul.a-unordered-list.a-nostyle.a-horizontal.list.maintain-height")
        .select("span.a-list-item span.a-declarative")
        .select("span.a-declarative")
        .select("div.imgTagWrapper")
        .select("img.a-dynamic-image.a-stretch-horizontal").first();
    String imageSRC = link.attr("src");
    

    你应该选择多个类

    .select("TAG.CLASS1.CLASS2.CLASS3")
    

    而不是

    .select("TAG.CLASS1 CLASS2 CLASS3")
    

    【讨论】:

    • 非常感谢!这行得通,我没有意识到这些空间意味着它们是不同的类。另外,你写了 span.a-declarative 两次,但我知道这可能是一个错字,它仍然有效。再次感谢您!
    猜你喜欢
    • 2019-07-31
    • 1970-01-01
    • 2016-08-16
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多