JSoup无法找到输入元素

时间:2013-10-01 06:32:37

标签: amazon jsoup

我正在尝试使用Jsoup连接到developers.amazon.com。

这是我的代码:

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

我无法登录。当我检查发布的表单数据时,在发布时我需要通过名称metadata1输入此输入字段。

但是,inputFieldMap变量中没有metadata1?

我做错了吗?

1 个答案:

答案 0 :(得分:0)

您没有获得metadata1字段的原因是因为某些JavaScript代码将其添加到DOM中。

您可以使用REST Console for Chrome之类的简单REST客户端来验证这一点,以便从https://developer.amazon.com/home.html获取GET。

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

没有什么可以真正做到这一点,Jsoup只是不是浏览器。

如果你想要抓住亚马逊的开发者网页,我会建议这种问题只是冰山一角。如果你四处搜寻,可能已经有一个已发布的API或库,可以为你完成任务。