zoukankan      html  css  js  c++  java
  • java 使用htmlunit模拟登录爬取新浪微博页面

    mport java.io.IOException;
    import java.net.MalformedURLException;
    import com.gargoylesoftware.htmlunit.BrowserVersion;
    import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
    import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
    import com.gargoylesoftware.htmlunit.WebClient;
    import com.gargoylesoftware.htmlunit.html.HtmlInput;
    import com.gargoylesoftware.htmlunit.html.HtmlPage;


    public class SinaLoginTest {
        public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException, InterruptedException {
            WebClient client = new WebClient(BrowserVersion.FIREFOX_24);
            client.getOptions().setJavaScriptEnabled(true);    //默认执行js,如果不执行js,则可能会登录失败,因为用户名密码框需要js来绘制。
            client.getOptions().setCssEnabled(false);
            client.setAjaxController(new NicelyResynchronizingAjaxController());
            client.getOptions().setThrowExceptionOnScriptError(false);        

            HtmlPage page = client.getPage("http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.16)");
            //System.out.println(page.asText());

            //登录

            HtmlInput ln = page.getHtmlElementById("username");
            HtmlInput pwd = page.getHtmlElementById("password");
            HtmlInput btn = page.getFirstByXPath(".//*[@id='vForm']/div[3]/ul/li[6]/div[2]/input");

            ln.setAttribute("value", "此处改为你的用户名");
            pwd.setAttribute("value", "此处改为你的密码");

            HtmlPage page2 = btn.click();
            //登录完成,现在可以爬取任意你想要的页面了。
            System.out.println(" ");
            //System.out.println(page2.asText());

            HtmlPage page3 = client.getPage("http://weibo.com/friends?leftnav=1&wvr=5&isfriends=1&step=2");
            System.out.println(" : " + page3.asXml());
            
            client.closeAllWindows();
        }

    }

    <注>取回html(对于page3,就是page3.asXml())后只需要用正则取出你想要的内容即可。

  • 相关阅读:
    LFYZ-OJ ID: 1008 求A/B高精度值
    高精度运算
    【2018国庆雅礼集训】部分题解
    【模板】倍增求LCA
    Luogu1516 青蛙的约会
    loj #10043. 「一本通 2.2 例 1」剪花布条
    我太菜了
    Luogu1280 尼克的任务
    Luogu1091 合唱队形
    Luogu1006 传纸条
  • 原文地址:https://www.cnblogs.com/telwanggs/p/6878695.html
Copyright © 2011-2022 走看看