没有调用新浪的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()); }
}

好啦,就是这么简单!

最新文章

  1. 邻接表的广度优先遍历(java版)
  2. MacOS下Python的多版本管理(pyenv)
  3. service 03 iis之服务器无访问权限
  4. XML Schema命名空间解析
  5. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q88-Q91)
  6. Linux 控制 配置 减少 交换分区 SWAP 虚拟内存使用
  7. Javascript的对象封装和继承有哪些方法?优劣分别是什么?
  8. java 导入自定义类
  9. Python inspect
  10. 内存分配函数malloc、realloc、calloc、_alloca
  11. JSON风格指南
  12. SpringAOP-JDK 动态代理和 CGLIB 代理
  13. spark-shell报错:Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
  14. 用sql获取一段时间内的数据
  15. HDU 1024 Max Sum Plus Plus【DP】
  16. 用Flask+Redis维护代理池
  17. 【XSY2759】coin DP 线性插值
  18. 用ffmpeg把视频编码格式转为h.264
  19. JAVA核心问题(一)反射之引言 构造函数
  20. [django]梳理drf知识点2

热门文章

  1. OpenStack Mitaka HA部署方案(随笔)
  2. STM32F103: NRF24L01
  3. 漂亮的Html5网站
  4. deep learning新征程(二)
  5. Struts06---通配符的使用
  6. UIPickerView/UIDatePicker/程序启动的完整过程
  7. canvas 创建颜色渐变柱状图
  8. RAD Studio Mobile Roadmap updated,XE5 will released on next month, Andriod will be supported.
  9. 微软原版WINDOWS10-LTSB-X64位操作系统的全新安装与优化
  10. 【转】C#中的线程 入门