Я просматриваю сайт с помощью HtmlUnit. В нем есть таблица со списком документа для загрузки. Я хочу щелкнуть все ссылки и собрать все документы (не волнуйтесь, информация общедоступна, а скребок не запрещен).Загрузка нескольких файлов на страницу с помощью HtmlUnit
site написан с JSF, так что ссылки на документы, на самом деле <a href="#"
с onclick
, которая представляет форму (но задает скрытое поле соответствующего значения и до этого).
Мой код (в Скале, но это не имеет значения):
val link = row.getFirstByXPath[HtmlElement](descriptor.documentLinkPath.get)
if (link.getAttribute("href").endsWith("#")) link.setAttribute("href", "javascript:void(0)")
val documentPage: Page = link.click()
val bytes = IOUtils.toByteArray(documentPage.getWebResponse().getContentAsStream())
Там проблема, однако. Первый документ загружен правильно. Но я не могу получить второй и далее - возвращается страница html, а не документ PDF. (комментирование # -> javascript:void(0)
не влияет, я положил его туда, потому что он взорвался с некоторым исключением)
Javascript включен и заставить его работать для первого документа означает, что все работает. Однако для следующих документов это не работает. Любые идеи, как решить?
Если я правильно помню, то внутреннее состояние водителя, если изменения u перейдите по ссылке link.click(). Поэтому вам нужно вернуться к исходной странице. – d0x
Я также пробовал это, вызывая htmlPage.getEnclosingWindow(). GetHistory(). Back() - no effect – Bozho
Чтобы сообщить нам, какая страница, которую вы хотите сканировать, не является опцией? – d0x