В настоящее время мне нужна программа, которая, учитывая URL, возвращает список всех изображений на веб-странице.
т.е.:
logo.png gallery1.jpg test.gif
Действительно ли там какое-либо программное обеспечение с открытым исходным кодом доступно, прежде чем я попытаюсь кодировать что-то?
Языком должен быть Java. Спасибо Philip
HTMLUNIT имеет HTMLPage.getelementsBytagname («IMG»)
, который, вероятно, будет вам удовлетворить.
(прочитайте короткие Get Manage Руководство, чтобы увидеть, как получить правильный объект HTMLPage
Это мертвые простые с Parser HTML (и любой другой приличный анализатор HTML):
Parser parser = new Parser("http://www.yahoo.com/");
NodeList list = parser.parse(new TagNameFilter("IMG"));
for ( SimpleNodeIterator iterator = list.elements(); iterator.hasMoreNodes(); ) {
Tag tag = (Tag) iterator.nextNode();
System.out.println(tag.getAttribute("src"));
}
Вы можете анализировать HTML и собирать все атрибуты SRC элементов IMG в коллекции. Затем загрузите каждый ресурс с каждого URL и напишите его в файл. Для анализа имеется несколько доступных препаратов HTML, COBRA является одним из них.
Просто используйте простой анализатор HTML , например jTidy , а затем получить все элементы по имени тега img
, а затем собрать атрибут src
каждого из них в List < Строка>
или, возможно, Список
.
Вы можете получить InputStream
из URL
, используя URL # openStream ()
, а затем передать его любому парсеру HTML, который вы хотите использовать. Вот начальный пример:
InputStream input = new URL("http://www.stackoverflow.com").openStream();
Document document = new Tidy().parseDOM(input, null);
NodeList imgs = document.getElementsByTagName("img");
List<String> srcs = new ArrayList<String>();
for (int i = 0; i < imgs.getLength(); i++) {
srcs.add(imgs.item(i).getAttributes().getNamedItem("src").getNodeValue());
}
for (String src: srcs) {
System.out.println(src);
}
Однако я должен признать, что HtmlUnit, предложенный Божо, действительно выглядит лучше.