HtmlUnit
// 创建一个浏览器,构造方法可以传入浏览器版本,这里我传入谷歌浏览器。
// 还可以选择火狐和IE浏览器等 BrowserVersion.XXX 常量
WebClient webClient = new WebClient(BrowserVersion.CHROME);
// 为了加快页面访问速度,禁用脚本和样式(这种极速版页面,不需要js参与)
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setCssEnabled(false);
// 添加cookie
CookieManager cookieManager = new CookieManager();
cookieManager.addCookie(new Cookie("tieba.baidu.com", "BDUSS", "这里填你复制好的BDUSS=等号后面那串,一直到分号之前。"));
webClient.setCookieManager(cookieManager);
// 打开一个网页 (也就是 java吧手机版首页)
// 返回的 HtmlPage 对象,类似于 javascript中的 document对象。
HtmlPage page = webClient.getPage("http://tieba.baidu.com/mo/m?kw=java");
// 获取当前页的所有帖子元素。返回 DOM节点列表
// querySelectorAll 的参数是 CSS选择器。这个学过网页的应该都懂。
DomNodeList<DomNode> iList = page.querySelectorAll(".i");
// 遍历所有帖子
for(DomNode i: iList) {
// TODO
}
for(DomNode i: iList) {
// 选择 p 元素
DomNode p = i.querySelector("p");
// asText() 返回 元素文本, contains是 String的方法,查找 "回0 " 字符串
if(p.asText().contains("回0 ")) {
// 这里就是找到了 回帖为0的帖子
// 我们用 父元素 div.i 来继续获取 子元素 a 标签。
HtmlAnchor a = (HtmlAnchor)i.querySelector("a");
// 获取 a 标签的属性 href ,就是帖子详情的地址啦!!
String href = a.getAttribute("href");
HtmlPage tPage = webClient.getPage("http://tieba.baidu.com" + href);
// 打开以后可以获取到 回帖的文本框。input[name=co]
HtmlInput co = (HtmlInput)tPage.querySelector("input[name=co]");
// 这里就是重头戏了,设置回帖的内容,
// 你可以事先准备一个回帖内容的数组,随机回复一个优美的句子。
// 这里我就回复一个 “专业二楼 ” 加上 当前时间
co.setValueAttribute("专业二楼" + new Date().toString());
// 选择回帖按钮
HtmlInput sub1 = (HtmlInput)tPage.querySelector("input[name=sub1]");
// 点击回帖按钮
sub1.click();
}
}
//将some_div_id改为特定ID。需根据page代码而定,如百度可以将id设为wrapper
final HtmlDivision div =page.getHtmlElementById("some_div_id");
//将anchor_name改为指定的name,也许因页面代码而定,如百度可以将其设为tj_settingicon
final HtmlAnchor anchor =page.getAnchorByName("anchor_name");
//获取所有div的列表
final List<?> divs =page.getByXPath("//div");
//获取有name属性为John的div
final HtmlDivision div = (HtmlDivision)page.getByXPath("//div[@name='John']").get(0);
//指定myform为特定name,如百度首页可为f
final HtmlForm form =page1.getFormByName("myform");
//指定submitbutton为指定Id,如百度首页可为su
final HtmlSubmitInput button =form.getInputById("submitbutton");
//获取修改域,如百度可将userid改为wd
final HtmlTextInput textField =form.getInputByName("userid");
// 修改域的值
textField.setValueAttribute("root");
// 通过点击按钮提交表单并获取返回页面
final HtmlPage page2 = button.click();