首页 > 代码库 > Jsoup登录解析网页信息
Jsoup登录解析网页信息
今天解析网页的时候,遇到必须登录后才能够访问的问题,在网上搜索了一些资料,反正有人做出来了,不过是使用HttpClient+Jsoup来实现的,我不清楚他们使用什么版本的Jsoup,地址:
HttpClient模拟登陆人人网,并且爬取日志内容(一),http://bbs.csdn.net/topics/390269063,查看现在的Jsoup API,可以直接模拟登陆,获取服务器返回的信息。
我这里是使用水木社区做Demo,其中下面的id和passwd分别是提交form表单中用户名和密码的input的name
<form action="/user/login" method="post"> <ul class="sec"> <li>用户名:<br/><input type="text" name="id" /></li> <li>密码:<br/><input type="password" name="passwd" /></li> <li><input type="checkbox" name="save" />记住我<br/> <input type="submit" class="btn" value=http://www.mamicode.com/"登录" />>Map<String, String> map = new HashMap<String, String>(); map.put("id", "****"); map.put("passwd", "****"); Response response = Jsoup.connect("http://m.newsmth.net/user/login") .data(map) .method(Method.POST) .timeout(20000) .execute(); if (response.statusCode() == 200) { SmthApp.getInstance().setCookies(response.cookies()); }其中Response里面就有我们需要的Cookie,获取的方式为response.cookies()返回类型是Map,下面是获取浏览器登录返回的Cookie内容,同样我们获取的Cookies也是这些内容。
Set-Cookie:main[UTMPUSERID]=***; path=/; domain=.newsmth.net Set-Cookie:main[UTMPKEY]=97311264; path=/; domain=.newsmth.net Set-Cookie:main[UTMPUSERID]=guest; path=/; domain=.newsmth.net Set-Cookie:main[PASSWORD]=%2501g2VSVO%257D%2507%251DW%253B%2524K%2B%251C%2500a%2502%2501%257DF%2505X; path=/; domain=.newsmth.net Set-Cookie:main[UTMPNUM]=9967; path=/; domain=.newsmth.net Set-Cookie:main[UTMPKEY]=68252570; path=/; domain=.newsmth.net Set-Cookie:main[UTMPNUM]=37535; path=/; domain=.newsmth.net当解析需要登陆的页面时,Document document = Jsoup.connect(url). timeout(20000). cookies(SmthApp.getInstance().getCookies())//这个就是上面获取的cookies .get();这样就可以模拟登陆解析页面,需要注意的是这个是有时间限制的,当失效后再次请求获取最新的Cookie。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。