Jsoup登錄解析網頁信息

jopen 8年前發布 | 15K 次閱讀 網絡爬蟲

今天解析網頁的時候,遇到必須登錄后才能夠訪問的問題,在網上搜索了一些資料,反正有人做出來了,不過是使用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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!