0

I am trying to use Jsoup to connect to developers.amazon.com.

Here is my code:

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);

I am not able to logon. When I checked the Form data that gets posted, There is this input field by name metadata1 that I need to send when doing post.

But, the metadata1 is not present in inputFieldMap variable?

Am I doing anything wrong?

4

1 回答 1

0

您没有获得该metadata1字段的原因是它被一些 JavaScript 代码添加到 DOM 中。

您可以使用简单的 REST 客户端(例如REST Console for Chromehttps://developer.amazon.com/home.html获取)来验证这一点。

您会注意到返回的 HTML 中没有metadata1字段,因为 REST 控制台不会像您的浏览器那样自动运行 JavaScript。

您对此无能为力,Jsoup不是浏览器。

如果您试图抓取亚马逊的开发人员页面,我会建议这种问题只是冰山一角。如果您四处寻找,可能已经有一个已发布的 API 或库可以为您完成任务。

于 2013-10-01T07:06:59.680 回答