Разбор HTML-элементов Java, сгенерированных JS

Я очень новичок в разборе html с Java, ранее я использовал JSoup для анализа простого html без его динамического изменения, однако теперь мне нужно проанализировать веб-страницу с динамическими элементами. Это код, с которым я пытался проанализировать веб-страницу до этого, однако найти элементы было невозможно, поскольку они были добавлены после загрузки страницы. Ситуация в вопросе - это страница, которая использует карты Google с маркерами на нем, я пытаюсь почистить изображения этих маркеров.

    public static void main(String[] args) {
try {
    doc = Jsoup.connect("https://pokevision.com")
            .userAgent(
                    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36")
            .get();
} catch (IOException e) {
    e.printStackTrace();
}
Elements images = doc.select("img[src~=(?i)\\.(png|jpe?g|gif)]");

for (Element image : images) {
    System.out.println("src : " + image.attr("src"));
}

}

Так как, очевидно, эта операция невозможна с JSoup, какие другие библиотеки я могу использовать, чтобы найти источники изображений.

 Zack25 июл. 2016 г., 17:55
@Tibrogargan, это селектор CSS, который поддерживается Jsoup:jsoup.org/cookbook/extracting-data/selector-syntax
 Tibrogargan25 июл. 2016 г., 03:54
посмотри пожалуйстаВы не можете разобрать HTML с Regex

Ответы на вопрос(1)

Проблема, с которой вы сталкиваетесь,Jsoup извлекает статический исходный код, так как он будет доставлен в браузер. То, что вы хотите, это DOM после вызова javaScript. Для этого вы можете использоватьБлок HTML чтобы получить обработанную страницу, а затем передать ее содержимоеJsoup для разбора.

// capture rendered page
WebClient webClient = new WebClient();
HtmlPage myPage = webClient.getPage("https://pokevision.com");

// convert to jsoup dom
Document doc = Jsoup.parse(myPage.asXml());

// extract data using jsoup selectors
Elements images = doc.select("img[src~=(?i)\\.(png|jpe?g|gif)]");
for (Element image : images) {
    System.out.println("src : " + image.attr("src"));
}

// clean up resources
webClient.close();

Ваш ответ на вопрос