2017-02-21 81 views
0

我正在學習使用Python進行爬網。使用Python登錄後進行爬網

我的目標是下載文件。

我正在學習登錄,現在非常困難。

http://www.kif.re.kr/kif2/login/login.aspx?menuid=56 

例如,我需要登錄才能從本網站下載文件。

我查了各種資料。

http://stackoverflow.com/questions/8316818/login-to-website-using-python 

但我想要的網站看起來有點不同。

我能夠抓取大多數不需要登錄的網站。

但是,我無法抓取需要登錄的網站。

所以我真的想研究那部分。

我的目標是登錄,然後在html中查看代碼進行爬網。

以下是我的代碼。這是正確的事情嗎?

from requests import session 

# ex) ID = abcd/PW = 1234 

payload = { 
'ctl00$ContentPlaceHolder1$tbxLoginID' : 'abcd', 
'ctl00$ContentPlaceHolder1$tbxLoginPW' : '1234' 
} 

with session() as c: 
    c.post('http://www.kif.re.kr/kif2/login/login.aspx', data=payload) 
    response = c.get('What should I write here?') 
    # response = c.get('http://example.com/protected_page.php') 
    print(response.headers) 
    print(response.text) 

回答

0

你錯過了一些登錄數據的形式,這裏的有效載荷應該怎麼看起來像

payload = { 
    '__LASTFOCUS': '',#empty 
    '__VIEWSTATE': 'get this value from the login page source', 
    '__VIEWSTATEGENERATOR': 'get this value from the login page source', 
    '__EVENTTARGET': '',#empty 
    '__EVENTARGUMENT': '',#empty 
    '__EVENTVALIDATION': 'get this value from the login page source', 
    'ctl00$agentPlatform': '1', 
    'ctl00$menu_nav1$tbxSearchWord': '',#empty 
    'ctl00$ContentPlaceHolder1$radiobutton': '0', 
    'ctl00$ContentPlaceHolder1$tbxLoginID': 'abcd', 
    'ctl00$ContentPlaceHolder1$tbxLoginPW': '1234', 
    'ctl00$ContentPlaceHolder1$ibtnLogin.x': '36', #i think this is the mouse cursor position 
    #when clicked on login, not sure if its necessary 
    'ctl00$ContentPlaceHolder1$ibtnLogin.y': '25' 
} 

響應= c.get( '我應該寫在這裏?')

編寫受保護頁面的網址!如果你能成功地獲得它,那麼你已經登錄。