Java HTMLUnit登录到Facebook广告管理器
我需要一个程序来帮助我在Facebook上开展活动。它必须登录Facebook,进入Java HTMLUnit登录到Facebook广告管理器,java,html,facebook,htmlunit,Java,Html,Facebook,Htmlunit,我需要一个程序来帮助我在Facebook上开展活动。它必须登录Facebook,进入www.Facebook.com/ads/manager/billing,读取账户上剩余的金额。我想做的是使用HTMLunit登录facebook,然后转到ads/manager/billing链接,将整个页面复制为文本,找到当前余额:xx.xx并显示在某处。问题是,当我进入广告/经理/账单页面时,该页面正在加载某些内容,只有在加载之后,它才会显示全部内容。因此,我的代码显示的是文本“正在加载,请稍候”,而不是最
www.Facebook.com/ads/manager/billing
,读取账户上剩余的金额。我想做的是使用HTMLunit登录facebook,然后转到ads/manager/billing链接,将整个页面复制为文本,找到当前余额:xx.xx并显示在某处。问题是,当我进入广告/经理/账单页面时,该页面正在加载某些内容,只有在加载之后,它才会显示全部内容。因此,我的代码显示的是文本“正在加载,请稍候”,而不是最后一页。代码如下:
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_45);
webClient.setJavaScriptEngine(new JavaScriptEngine(webClient));
HtmlPage page1 = null;
try {
page1 = webClient.getPage("https://www.facebook.com");
} catch (IOException e) {
e.printStackTrace();
}
final HtmlForm form = (HtmlForm) page1.getElementById("login_form");
final HtmlSubmitInput button = (HtmlSubmitInput) form.getInputsByValue("Log In").get(0);
final HtmlTextInput textField = (HtmlTextInput) page1.getElementById("email");
textField.setValueAttribute("asd@gmail.com");
final HtmlPasswordInput textField2 = (HtmlPasswordInput) page1.getElementById("pass");
textField2.setValueAttribute("mypass");
try {
HtmlPage page2 = button.click();
System.out.println(page2.getTitleText());
} catch (IOException e) {
e.printStackTrace();
}
HtmlPage page = null;
try {
page = webClient.getPage("https://www.facebook.com/ads/manager/billing");
} catch (Exception e) {
System.out.println("Get page error");
}
System.out.println(page.asText());
有没有其他更简单的方法来实现这一点?谢谢。是的……更简单、正确的方法是使用Facebook广告API。不要刮脸书。首先,Facebook的抓取政策不允许这样做。第二,Facebook每天都会改变一些事情,这将打破僵局。第三,只需使用API。非常感谢API的帮助。