没有调用新浪的API,在程序中加入自己的帐号和密码就能发送微博,代码完全在后台运行,不用打开浏览器。

用了HtmlUnit这个库来模拟登录还有发送微博。

先上效果图:

这个是刚登陆上获取第一页的信息。

发送微博:

没什么难的地方,找到相应的按钮和文本域,然后点击,简单说就是用代码模仿用户的操作。

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()); }
}

好啦,就是这么简单!

使用JAVA实现模拟登陆并发送新浪微博(非调用新浪API)的更多相关文章

  1. java 根据ip获取地区信息(淘宝和新浪)

    package com.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...

  2. java调用新浪接口根据Ip查询所属地区

    import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import ...

  3. Java发布webservice应用并发送SOAP请求调用

    webservice框架有很多,比如axis.axis2.cxf.xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML ...

  4. Java开发新闻管理系统(前后端)+爬虫百度、新浪等新闻

                  ForFuture News  新闻管理系统                      项目演示地址:http://www.ganquanzhong.top [注]:文档下 ...

  5. Java实现模拟登录新浪微博

    毕设题目要使用到新浪微博数据,所以要爬取新浪微博的数据.一般而言,新浪微博的爬虫有两种模式:新浪官方API和模拟登录新浪微博.两种方法的异同点和适用情况就无须赘述了.前辈的文章已经非常多了.写这篇文章 ...

  6. Python模拟登陆新浪微博

    上篇介绍了新浪微博的登陆过程,这节使用Python编写一个模拟登陆的程序.讲解与程序如下: 1.主函数(WeiboMain.py): import urllib2 import cookielib i ...

  7. Scrapy模拟登陆

    1. 为什么需要模拟登陆? #获取cookie,能够爬取登陆后的页面 2. 回顾: requests是如何模拟登陆的? #1.直接携带cookies请求页面 #2.找接口发送post请求存储cooki ...

  8. 手把手教你用新浪云容器 Java 搭建自己的网站

    经过一段时间的开发,更新,迭代,新浪云容器 Java 环境逐渐成熟起来,相比过去的 Java 运行环境,可用性和易用性都得到了大量的提升.同时也收到了不少用户反馈的使用问题,特此在这篇文章里综合介绍一 ...

  9. 根据新浪天气API获取各地天气状况(Java实现)

    原文出自 参考网址(重要) http://blog.csdn.net/cyxlzzs/article/details/7602469  新浪 http://blog.csdn.net/l_ch_g/a ...

随机推荐

  1. ifconfig 修改IP

    ifconfig 查看IP sudo ifconfig eth0 192.168.1.118 sudo ifconfig eth0 down sudo ifconfig eth0 up ping (w ...

  2. LeetCode OJ:Recover Binary Search Tree(恢复二叉搜索树)

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

  3. 关于bind named.conf.options

    /etc/named/named.conf.options中的Options参数   listen-on port 53 { any; }; 监听在这部主机系统上面的哪个网路介面.预设是监听在loca ...

  4. Illumina Fastq Q-score

    Illumina Nextseq500 Miseq HiseqXten 测序仪 Q-score均采用下面的编码格式,仅作简要介绍. Q-score Q-score 在fastq中每个序列的第4行,代表 ...

  5. cocos2d-x android8.0 视频层遮挡问题

    cocos里默认情况下视频层是在cocos 层的上面,如果希望把视频层放在cocos的下面的话, android8.0以下,把Cocos2dxVideoHelper.java里的 videoView. ...

  6. hibernate的list和iterate的区别

    一.先介绍一下java中的缓存系统JCS(java cache system)  1.JCS(Java Caching System)是一个对象Cache,它可以把Java对象缓存起来,提高那些访问频 ...

  7. jQuery使用prop设置checkbox全选、反选

    $(function(){     var checkbox = $("input[type='checkbox']");     //全选     $('#select-all' ...

  8. Hadoop(二)自定义输出

    Hadoop提供了较为丰富的数据输入输出格式,可以满足很多的设计实现,但是在某些时候需要自定义输入输出格式. 数据的输入格式用于描述MapReduce作业的数据输入规范,MapReduce框架依靠 数 ...

  9. ③SpringBoot中Redis的使用

    本文基于前面的springBoot系列文章进行学习,主要介绍redis的使用. SpringBoot对常用的数据库支持外,对NoSQL 数据库也进行了封装自动化. redis介绍 Redis是目前业界 ...

  10. Java之父职场路

    Java之父——詹姆斯·高斯林出生于加拿大,是一位计算机编程天才.在卡内基·梅隆大学攻读计算机博士学位时,他编写了多处理器版本的Unix操作系统,是JAVA编程语言的创始人.1991年,在Sun公司工 ...