Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTMLUnit登录到Facebook广告管理器_Java_Html_Facebook_Htmlunit - Fatal编程技术网

Java HTMLUnit登录到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并显示在某处。问题是,当我进入广告/经理/账单页面时,该页面正在加载某些内容,只有在加载之后,它才会显示全部内容。因此,我的代码显示的是文本“正在加载,请稍候”,而不是最

我需要一个程序来帮助我在Facebook上开展活动。它必须登录Facebook,进入
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的帮助。