2016-08-08 7 views
2

Я использую Jsoup для очистки некоторых онлайн-данных из разных магазинов, но мне трудно понять, как программно воспроизводить то, что я делаю как пользователь. Чтобы получить данные вручную (после входа в систему), пользователь должен выбрать магазин из a tree, который появляется.Jsoup с плагином

Насколько я могу судить, дерево не жестко закодировано на сайте, но создается интерактивно, когда ваш компьютер взаимодействует с сервером. Когда вы ищете таблицу в «источнике страницы просмотра», записей нет. Когда я inspect the tree, я вижу HTML-код, и, похоже, он появился из плагина FancyTree.

Насколько я могу судить по отслеживанию моей активности в Developer Tools - Network, следующим шагом является запрос «GET», который не изменяет URL-адрес, поэтому я не уверен, как мой выбор магазина переданы.

Любые советы о том, как получить Jsoup или Java, как правило, программно взаимодействовать с этой таблицей, были бы чрезвычайно полезны, спасибо!

+0

DOMS слишком динамичны в эти дни, чтобы надеяться проанализировать только html и получить что-нибудь полезное. Вам понадобится использовать такой инструмент, как Selenium, который имеет браузеры с дистанционным управлением. Таким образом, вы можете попросить его найти кнопки и выпадающие списки, выбрать правильные элементы, правильно выполнить JS, а затем спросить браузер о текущем состоянии DOMS, когда все будет правильно. Затем вы можете разобрать это с помощью jsoup. Если это приложение на стороне сервера с использованием Linux, вы все равно можете сделать все без головы, используя xvfb (полезная подсказка, если это так). – Quaternion

+0

Спасибо за это, я бы отдал его, если бы смог поддержать комментарии! – Cory

ответ

1

Jsoup может анализировать только исходный файл, а не DOM. Чтобы разобрать DOM, вам нужно отобразить страницу с чем-то вроде HtmlUnit. Затем вы можете проанализировать содержимое html с помощью Jsoup.

// load page using HTML Unit and fire scripts 
WebClient webClient = new WebClient(); 
HtmlPage myPage = webClient.getPage(myURL); 

// convert page to generated HTML and convert to document 
doc = Jsoup.parse(myPage.asXml()); 

// do something with html content 
System.out.println(doc.html()); 

// clean up resources   
webClient.close(); 

См. Parsing Javascript Generated Page with Jsoup.

+1

Это очень полезно, спасибо! – Cory

Смежные вопросы