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="登錄" /></li> </ul> </form>
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。
來自: http://blog.csdn.net/jwzhangjie/article/details/27339487
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!