所以目前我有一个抓取程序,登录谷歌帐户并从谷歌播放开发者控制台(下载,ANR,崩溃等)获取应用程序数据。我使用java和HTMLUnit库作为scraper。以下是登录部分的片段:
public static void login(String url)
{
try
{
Utility.turn_off_warning(webclient); //this is just to turn off the warning in HTMLUnit
HtmlPage page = (HtmlPage)webclient.getPage(url);
//getting the elements
HtmlTextInput email = (HtmlTextInput)page.getElementById("Email");
HtmlPasswordInput pass = (HtmlPasswordInput)page.getElementById("Passwd");
HtmlSubmitInput submit = (HtmlSubmitInput)page.getElementById("signIn");
// inserting value
email.setValueAttribute(Settings.google_username);
pass.setValueAttribute(Settings.google_pass);
// press login button
HtmlPage afterLogin = (HtmlPage)submit.click();
System.out.print("Logged In");
}
catch (Exception e)
{
e.printStackTrace();
}
}
所以上面的代码适用于登录部分,直到谷歌几周前更改了登录页面的结构IIRC,现在你必须先输入电子邮件,按下一个按钮,输入密码,然后按登录按钮。我试着设置我的刮刀来做到这一点,但它没有用。我想这是因为HTMLUnit无法处理页面中javascript的任何变化,所以现在我被卡住了。任何帮助或建议都非常感谢...谢谢:)
答案 0 :(得分:0)
好的,我找到了解决方案。
webclient.setJavaScriptEnabled(false);
我添加了这一行,它有效。我只需要改变
的流量grabbing all elements -> set all value -> click submit
到
grab email input and submit button -> set email ->
submit -> grab password and submit button -> set password -> submit