Я пытаюсь создать приложение с помощью java, которое будет читать информацию с веб-страницы. Чтобы загрузить информацию из элементов, которые я хочу, я использовал jsoup (отличный инструмент!), Но я хочу загрузить следующую страницу GridView, используемую на веб-странице. страница является страница .aspx и ссылка на 2-й странице такова:HTMLUnit в Java - Как перейти на страницы GridView
<a href="javascript:__doPostBack('GridView1','Page$2')" style="color:White;">2</a>
Ниже функция Javascript используется:
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
В настоящее время я пытаюсь сделать это с помощью HtmlUnit но выглядит как не работает. Ниже приведен код, я использую:
final WebClient webClient = new WebClient(BrowserVersion.CHROME);
HtmlPage page = webClient.getPage("http://www.webpage.com/Main.aspx");
HtmlAnchor anchor = null;
List<HtmlAnchor> anchors = page.getAnchors();
for (int j = 0; j < anchors.size(); j++)
{
anchor = anchors.get(j);
String sAnchor = anchor.asText();
String sAnchorxml = anchor.asXml();
if (sAnchor.equals("2"))
{
HtmlPage page2 = anchor.click();
doc = Jsoup.parse(page2.asXml());
.....
Когда я прочитал страницу, используя один и тот же код, который я прочитал 1-ю страницу, я получаю следующее сообщение об ошибке:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at test.advacus.com.MainProgram.main(MainProgram.java:148)
Я предполагаю, что моя ошибка в линия 'Jsoup.parse()'
. Чтобы уточнить, что, как только вы нажимаете на следующую страницу, URL-адрес не изменяется, а только информация в GridView, поэтому я не могу проанализировать использование нового URL-адреса.
Любая дополнительная помощь или любой предлагаемый инструмент вместо HTMLUnit, который будет сотрудничать с jsoup лучше, действительно поможет! Спасибо заранее!
Edited для получения дополнительной информации: Похоже, это click()
, что не работает ... Я изменил код и тело NEWPAGE выглядит она содержит ту же информацию, что и 1-й страницы:
final WebClient webClient = new WebClient(BrowserVersion.CHROME);
HtmlPage page = webClient.getPage("http://www.qatarsale.com/EnMain.aspx");
HtmlAnchor anchor = page.getAnchorByText("2");
HtmlPage newPage = anchor.click();
HtmlElement el = newPage.getBody();
System.out.println(el.asText());
Вы можете разместить URL страницы? '__doPostBack', вероятно, вызовет запрос в фоновом режиме, который может быть воспроизведен с помощью jsoup. –
Здравствуйте, F.Klein .... http://qatarsale.com/EnMain.aspx - это url ... doPostBack выглядит как передача параметра следующей страницы на сервер ASP.Net .... но, к сожалению, я не справился найти новый URL для этого – thpst