1
omg 2013-11-25 16:22:56 +08:00
是不是需要用户登录,然后去搜索获取数据?
|
2
txlty 2013-11-25 18:18:21 +08:00 1
java的htmlunit应该可以全面模拟浏览器。
你也可以想办法集成phantomjs,我用phantomjs试了一下: phantom.outputEncoding="gb2312"; var page = require('webpage').create(); page.viewportSize = { width: 1024, height: 768 }; page.settings.userAgent = 'Mozilla/5.0 (Windows NT 5.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36'; //chrome page.settings.loadImages = true; page.settings.javascriptEnabled = true; page.open("http://www.yesinfo.com.cn/pqs_revision/pages/jsp/popuPublic.jsp", function(status) { page.onUrlChanged = function(url) { //当地址变化 console.log("page url :"+url); }; if (status !== 'success') { console.log('FAIL to load the address'); phantom.exit(); } else { window.setTimeout(function () { page.evaluate(function () { document.querySelector('input[name=cont_id]').value = 'ESPU8040903'; document.querySelector('input[name=Submit12]').click(); }); }, 2000); window.setTimeout(function () { var cookie=page.evaluate(function () { return document.cookie; }); var result=page.evaluate(function () { return document.querySelector('.sub_title ~ table').innerHTML; }); console.log("cookie : "+cookie); console.log("result : "+result); phantom.exit(); }, 5000); } }); 结果: |
3
gybciy1s1s1 OP @omg 不用登陆的,是公共查询部分的内容
|
4
gybciy1s1s1 OP @txlty 谢谢,我试试,这个是要用在网站上的,所以如果能用js,那应该就可以了
|
5
gybciy1s1s1 OP 这个功能要求是能在java web上使用的
|
6
gybciy1s1s1 OP @txlty phantomjs 要安装的,应该没办法集成到java web 开发里面去,我试了下htmlunit,写了以下代码:
WebClient client = new WebClient(BrowserVersion.INTERNET_EXPLORER_7); //获取某网站页面 HtmlPage page = client.getPage("http://www.yesinfo.com.cn/pqs_revision/pages/jsp/popuPublic.jsp"); // System.out.println(page.getWebResponse().getContentAsString()); //获取某页面元素,可通过id或name,(具体方式很多 --Foxswily) HtmlElement elmt = page.getElementById("containerId"); elmt.click(); elmt.type("PONU0693507"); //获取按钮 HtmlButtonInput loginBtn = (HtmlButtonInput)page.getElementByName("Submit12"); //点击并获得返回结果 Page resultPage = loginBtn.click(); System.out.println(resultPage.getWebResponse().getContentAsString()); 发现被跳转到首页去了 |
7
gybciy1s1s1 OP 已经外包出去了,谢谢大家
|