使用JAVA發送新浪微博(非調用新浪API)

nyyb 9年前發布 | 50K 次閱讀 Java開發 Java

沒有調用新浪的API,在程序中加入自己的帳號和密碼就能發送微博,代碼完全在后臺運行,不用打開瀏覽器。

用了HtmlUnit這個庫來模擬登錄還有發送微博。

先上效果圖:

這個是剛登陸上獲取第一頁的信息。

 使用JAVA發送新浪微博(非調用新浪API)

 

發送微博:

 使用JAVA發送新浪微博(非調用新浪API)

 使用JAVA發送新浪微博(非調用新浪API)

 

沒什么難的地方,找到相應的按鈕和文本域,然后點擊,簡單說就是用代碼模仿用戶的操作。

public class weibo {

public static void main(String args[]) throws FailingHttpStatusCodeException, MalformedURLException, IOException, InterruptedException{

    //新浪微博登錄頁面
    String baseUrl = "https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F";


    //打開
    WebClient webClient = new WebClient(BrowserVersion.CHROME);

    webClient.addRequestHeader("User-Agent", "Mozilla/5.0 (iPad; CPU OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53");

    //webClient.addRequestHeader("User-Agent", "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36");

    HtmlPage page = webClient.getPage(baseUrl);

    //等待頁面加載
    Thread.sleep(1000);

    //獲取輸入帳號的控件
    HtmlInput usr = (HtmlInput) page.getElementById("loginName");

    usr.setValueAttribute("Your Account");

    //獲取輸入密碼的控件
    HtmlInput pwd = (HtmlInput) page.getElementById("loginPassword");

    pwd.setValueAttribute("Your Password");

    //點擊登錄
    DomElement button = page.getElementById("loginAction");


    page =(HtmlPage) button.click();


    //等待頁面加載
    Thread.sleep(1000);


    //獲取到“寫微博”這個按鈕,因為這個按鈕沒有name和id,獲取所有<a>標簽
    DomNodeList<DomElement> button2 = page.getElementsByTagName("a");


    //跳轉到發送微博頁面    
    page =(HtmlPage)button2.get(4).click();

    //等待頁面加載
    Thread.sleep(1000);



    //獲取發送控件 標簽為<a>中的2個
    DomNodeList<DomElement> button3 = page.getElementsByTagName("a");
    //獲取文本宇
    HtmlTextArea content =(HtmlTextArea) page.getElementById("txt-publisher");

    DomElement fasong = button3.get(1);

    content.focus();

    Date date = new Date();

    //填寫你要發送的內容
    content.setText("使用JAVA發送微博!!!!\n"+date);



    //改變發送按鈕的屬性,不能無法發送
    fasong.setAttribute("class", "fr txt-link");

    //發送!!!
    page = (HtmlPage)fasong.click();


    Thread.sleep(5000);

    System.out.println(page.asText());




}

}</pre>
來自:http://www.cnblogs.com/wzben/p/5040353.html

 本文由用戶 nyyb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!