Как разобрать HTML, чтобы получить 3 URL для отдельных строк? - PullRequest
2 голосов
/ 19 сентября 2011

Я пытаюсь проанализировать каждый URL из этого HTML

<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 в отдельной строке с помощью jsoup.

Я неплохо справился с анализом jsoup.Но что я хочу сделать здесь, я не знаю, с чего начать получать каждый URL в своей собственной строке

Как мне сделать это здесь?Разбор и затем получение его для разделения строк?

РЕДАКТИРОВАТЬ:

Или, если я не могу получить их в отдельные строки, может быть, я мог бы установить их в список?и загрузить их по позиции в некотором роде?

ИЛИ Могу ли я загрузить каждый из них ... 1 на 1?

Просто некоторые предложения я думаю о ...

РЕДАКТИРОВАТЬ:Из комментария ниже я вижу, что это то, что мне нужно для извлечения ссылок в виде списка.

/**
* Example program to list links from a URL.
*/
public class ListLinks {
    public static void main(String[] args) throws IOException {
        Validate.isTrue(args.length == 1, "usage: supply url to fetch");
        String url = args[0];
        print("Fetching %s...", url);

        Document doc = Jsoup.connect(url).get();
        Elements links = doc.select("a[href]");
        Elements media = doc.select("[src]");
        Elements imports = doc.select("link[href]");

        print("\nMedia: (%d)", media.size());
        for (Element src : media) {
            if (src.tagName().equals("img"))
                print(" * %s: <%s> %sx%s (%s)",
                        src.tagName(), src.attr("abs:src"), src.attr("width"), src.attr("height"),
                        trim(src.attr("alt"), 20));
            else
                print(" * %s: <%s>", src.tagName(), src.attr("abs:src"));
        }
    }
}

Я не думаю, что это точно оптимизировано для моего использования, но в правильном направлении.

Что мне нужно сделать, чтобы он извлек мой список примеров из HTML-кода выше?

1 Ответ

2 голосов
/ 23 сентября 2011

Вы просто хотите все изображения?Тогда попробуйте это XPath выражение:

XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) xpath.evaluate("//img", doc, XPathConstants.NODESET);

List<String> imageUrls = new ArrayList<String>();
for (int i = 0; i < nodes.getLength(); i++) {
    Node img = nodes.item(i);
    imageUrls.add(img.getAttributes().getNamedItem("src").getNodeValue());
}
...