Python爬蟲擷取JSESSIONID登入網站

來源:互聯網
上載者:User

標籤:python   jsessionid   

在使用Python對一些網站的資料進行採集時,經常會遇到需要登入的情況。這些情況下,使用FireFox等瀏覽器登入時,內建的調試器(快速鍵F12)就可以看到登入的時候網頁向伺服器提交的資訊,把這部分資訊提取出來就可以利用Python 的 urllib2 庫結合Cookie進行類比登入然後採集資料,如以下代碼:

#coding=utf-8import urllibimport urllib2import httplibimport cookieliburl = ‘http://www.xxx.net/‘cookie = cookielib.CookieJar()cj=urllib2.HTTPCookieProcessor(cookie)#設定登入參數,使用瀏覽器的調試器等抓包工具得到postdata=urllib.urlencode({‘JSESSIONID‘:‘1F616774D9548C1E8AF12A65B470B663‘, ‘username‘:‘admin‘,‘password‘:‘admin‘})#產生請求request=urllib2.Request(url, postdata)#設定代理request.set_proxy(‘xx.xx.xx.xx:xx‘,‘http‘)#登入opener=urllib2.build_opener(cj)urllib2.install_opener(opener) html=opener.open(request)print html.read()#開啟資料頁面開始採集資料s = urllib2.urlopen(‘http://www.xx.net‘).read()

可以留意到,提交的資料包含了一個JSESSIONID參數,百度一下就知道,通常Tomcat伺服器產生一個新的會話的時候就會產生這個ID,並且包含在登入頁面的HEAD裡面,如:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5B/29/wKiom1UAUKXyY5ueAAHUFoPW_H4458.jpg" title="JSESSIONID.png" alt="wKiom1UAUKXyY5ueAAHUFoPW_H4458.jpg" />


某些伺服器使用固定一個JSESSIONID就可以重複登入,但某些就不行,應該是伺服器可以設定的。對於固定JSESSIONID可以登入的,上面的代碼就可以應付了,但動態改變的就需要先擷取本次會話的JSESSIONID,然後再提交登入:

#擷取Tomcat伺服器產生的JSESSIONIDrequest = urllib2.Request(url)set_cookie = urllib2.urlopen(request).info()[‘Set-Cookie‘]json_id = set_cookie.split(‘;‘)[0]#JSESSIONID=3037DCDF69A6454FC525E38C41E6B611json_id = json_id.split(‘=‘)[-1]print json_id



本文出自 “自由自我” 部落格,請務必保留此出處http://hhuayuan.blog.51cto.com/1630327/1619513

Python爬蟲擷取JSESSIONID登入網站

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.