java - 如何解析并返回指向单独的 strings[] 或字符串的链接列表?

标签 java android dom jsoup

我有相应格式的 html div 类....

<div class="latest-media-images">
    <div class="hdr-article">LATEST IMAGES</div>
        <a class="lnk-thumb" href="http://media.pc.ign.com/media/093/093395/imgs_1.html"><img id="thumbImg1" src="http://media.ignimgs.com/media/thumb/351/3513804/the-elder-scrolls-v-skyrim-20110824023151748_thumb_ign.jpg" class="latestMediaThumb" alt="" height="109" width="145"></a>
                <a class="lnk-thumb" href="http://media.pc.ign.com/media/093/093395/imgs_1.html"><img id="thumbImg2" src="http://media.ignimgs.com/media/thumb/351/3513803/the-elder-scrolls-v-skyrim-20110824023149685_thumb_ign.jpg" class="latestMediaThumb" alt="" height="109" width="145"></a>
                <a class="lnk-thumb" href="http://media.pc.ign.com/media/093/093395/imgs_1.html"><img id="thumbImg3" src="http://media.ignimgs.com/media/thumb/351/3513802/the-elder-scrolls-v-skyrim-20110824023147685_thumb_ign.jpg" class="latestMediaThumb" alt="" height="109" width="145"></a>
                </div>

现在......我一直在尝试想不同的方法来做到这一点。

我想解析每个 URL 以分隔每个 URL 的字符串...

现在我正在考虑如何将它们解析成一个列表,然后通过传递一个位置来选择每个列表?

(如果有人想回答这个问题,也请随意)

或者我可以做一些事情,例如导航到 div 类...

Element latest_images = doc.select("div.latest-media-images");
Elements links = latest_images.getElementsByTag("img");

for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}

我正在考虑这个,还没尝试过。当我有机会时我会的。

但是我如何使用代码将每个解析为单独的字符串或整个列表?(如果正确的话)

请随意留下建议或答案 =) 或让我知道我上面的代码是否可以解决问题。

谢谢, 终身编码器22

最佳答案

这里是使用 RegEx 从 html 中提取所有 img url 的代码示例:

//I used your html with some obfuscations to test some fringe cases.
    final String HTML
            = "<div class=\"latest-media-images\">\n"
            + "<div class=\"hdr-article\">LATEST IMAGES</div>\n"
            + "<a class=\"lnk-thumb\" href=\"http://media.pc.ign.com/media/093/093395/imgs_1.html\"><img id=\"thumbImg1\" \n "
            + "src=\"http://media.ignimgs.com/media/thumb/351/3513804/the-elder-scrolls-v-skyrim-20110824023151748_thumb_ign.jpg\" class=\"latestMediaThumb\" alt=\"\" height=\"109\" width=\"145\"></a>\n"
            + "<a class=\"lnk-thumb\" href=\"http://media.pc.ign.com/media/093/093395/imgs_1.html\"><img id=\"thumbImg2\" src=  \n"
            + "\"http://media.ignimgs.com/media/thumb/351/3513803/the-elder-scrolls-v-skyrim-20110824023149685_thumb_ign.jpg\" class=\"latestMediaThumb\" alt=\"\" height=\"109\" width=\"145\"></a>\n"
            + "<a class=\"lnk-thumb\" href=\"http://media.pc.ign.com/media/093/093395/imgs_1.html\"><img id=\"thumbImg3\" src "
            + "=    \t \n  "
            + "\"http://media.ignimgs.com/media/thumb/351/3513802/the-elder-scrolls-v-skyrim-20110824023147685_thumb_ign.jpg\" class=\"latestMediaThumb\" alt=\"\" height=\"109\" width=\"145\"></a>\n"
            + "</div>";

    Pattern pattern = Pattern.compile ("<img[^>]*?src\\s*?=\\s*?\\\"([^\\\"]*?)\\\"");
    Matcher matcher = pattern.matcher (HTML);

    List<String> imgUrls = new ArrayList<String> ();
    while (matcher.find ())
    {
        imgUrls.add (matcher.group (1));
    }

    for (String imgUrl : imgUrls) System.out.println (imgUrl);

输出与 Sahil Muthoo 发布的相同:

http://media.ignimgs.com/media/thumb/351/3513804/the-elder-scrolls-v-skyrim-20110824023151748_thumb_ign.jpg
http://media.ignimgs.com/media/thumb/351/3513803/the-elder-scrolls-v-skyrim-20110824023149685_thumb_ign.jpg
http://media.ignimgs.com/media/thumb/351/3513802/the-elder-scrolls-v-skyrim-20110824023147685_thumb_ign.jpg

如果通过使用链接首先获取 html,您的意思是您有一个 url,那么唯一的变化是您需要先加载 html,而不是使用硬编码字符串。例如,您可以使用 Java OOB 类 URL:

new URL ("http://some_address").openConnection ().getInputStream ();

关于java - 如何解析并返回指向单独的 strings[] 或字符串的链接列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7476026/

相关文章:

java - 如何保持FirebaseDatabase连接始终在线?至少几个小时

javascript - 如果 innerHTML 是邪恶的,那么更改链接文本的更好方法是什么?

javascript - 在 mx :HTML's iframe (and read it's value cross-domain) 中设置 `top.location === location`

android - Twilio 发送有关 android 问题的文本

Javascript - DOM 中的 BUG?

java - 关于新对象

java - 我的角色不会在屏幕上移动

java - 在 Java 中给定 JSON 路径/JSON 指针获取 JSON 文件的行号

Android O - 单行通知 - 像 "Android System - USB charging this device"

java - 当线程已经停止时它已经在运行