我正在尝试使用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?
我做错了吗?
答案 0 :(得分:0)
您没有获得metadata1
字段的原因是因为某些JavaScript代码将其添加到DOM中。
您可以使用REST Console for Chrome之类的简单REST客户端来验证这一点,以便从https://developer.amazon.com/home.html获取GET。
您会注意到返回的HTML中没有metadata1
字段,因为REST控制台不像您的浏览器那样自动运行JavaScript。
没有什么可以真正做到这一点,Jsoup只是不是浏览器。
如果你想要抓住亚马逊的开发者网页,我会建议这种问题只是冰山一角。如果你四处搜寻,可能已经有一个已发布的API或库,可以为你完成任务。