2013-10-01 4 views
0

Я пытаюсь использовать Jsoup для подключения к developers.amazon.com.JSoup Не удалось найти элемент ввода

Вот мой код:

Map<String, String> get_All_InputFields(Document loginPage) 
{ 
    Map<String, String> inputFieldMap = new HashMap<String, String>(); 

    Elements inputElements = loginPage.getElementsByTag("input"); 

    for(Element e : inputElements) 
    { 
     if(!e.attr("name").isEmpty()) 
      inputFieldMap.put(e.attr("name"), e.attr("value")); 
    } 
    return inputFieldMap; 
} 

String url_logon_str = "https://developer.amazon.com/home.html"; 
Connection.Response login_response = Jsoup.connect(url_logon_str).method.(Connection.Method.GET).execute(); 

Document loginPage = login_response.parse(); 
Map<String , String> inputFieldMap = get_All_InputFields(loginPage); 

Я не смог войти в систему. Когда я проверил данные формы, которые отправляются, есть это поле ввода по имени метаданные1, которое мне нужно отправить при создании сообщения.

Но метаданные1 нет в переменной inputFieldMap?

Я делаю что-то неправильно?

ответ

0

Причина, по которой вы не получаете поле metadata1, заключается в том, что он добавляется в DOM по коду JavaScript.

Вы можете проверить это, используя простой клиент REST, такой как REST Console for Chrome, чтобы получить от https://developer.amazon.com/home.html.

Вы заметите, что в возвращенном HTML нет поля metadata1, потому что консоль REST автоматически не запускает JavaScript, как ваш браузер.

Здесь вы ничего не можете поделать, Jsoup просто не браузер.

Я бы предположил, что такая проблема является лишь верхушкой айсберга, если вы пытаетесь очистить страницы разработчиков Amazon. Если вы копаетесь, может быть уже опубликован API или библиотека, которые будут выполнять эту задачу для вас.

+0

Благодарим за отзыв. Было бы неплохо, если бы я мог сделать это в Jsoup. Будет ли поиск любой api amazon, возможно, предоставил – user2687484

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