抓取一个带cookie验证的网页信息

2013-11-25 14:39:39 +08:00
 gybciy1s1s1
之前在csdn上提问过,链接 http://bbs.csdn.net/topics/390639292?page=1#post-396048345
要求:用java动态抓取一个指定网站的数据
费用:500
qq:245358419
具体的qq联系,谢谢
1040 次点击
所在节点    外包
7 条回复
omg
2013-11-25 16:22:56 +08:00
是不是需要用户登录,然后去搜索获取数据?
txlty
2013-11-25 18:18:21 +08:00
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);
}
});
结果:
gybciy1s1s1
2013-11-26 08:58:22 +08:00
@omg 不用登陆的,是公共查询部分的内容
gybciy1s1s1
2013-11-26 09:04:13 +08:00
@txlty 谢谢,我试试,这个是要用在网站上的,所以如果能用js,那应该就可以了
gybciy1s1s1
2013-11-26 10:26:49 +08:00
这个功能要求是能在java web上使用的
gybciy1s1s1
2013-11-26 13:50:23 +08:00
@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());

发现被跳转到首页去了
gybciy1s1s1
2013-11-26 14:40:36 +08:00
已经外包出去了,谢谢大家

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/90533

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX