2017-02-21 56 views
0

Я пытаюсь войти в веб-сайт, а затем выполнить некоторые задачи, чтобы получить нужные мне данные. Я рассматривал примеры способов входа в систему, но ничто из того, что я пробовал, похоже, не работает для моего дела. Я слышал, что модуль «запросы» - это то, что я должен использовать.Войдите на сайт в скрипте Python

Вот раздел форма страницы входа (https://verification.nws.noaa.gov/services/public/login.aspx):

<form name="PageForm" method="POST" action="/services/public/login.aspx" id="PageForm"> 
. 
. 
(a little ways down) 
. 
. 
    <p> 
     <label for="Username">Username:</label> 
     <br> 
     <input name="UsernameBox" type="text" id="UsernameBox"> 
    </p> 
    <p> 
     <label for="Password">Password:</label> 
     <br> 
    </p> 
    <p> 
     <input type="submit" name="LoginBtn" value="Login" onclick="javascript: WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("LoginBtn", "", true, "", "", false, false))" language="javascript" id="LoginBtn" class="btn"> 
    </p> 
    . 
    . 
</form> 

Это то, что я для моего кода Python до сих пор, и это, кажется, не войти в систему или работа:

import requests 

# Log into the NWS Performance Management site to get Storm Data. 
url = 'https://verification.nws.noaa.gov/services/public/login.aspx?' 
values = {'UsernameBox': 'myuser', 
      'PasswordBox': 'mypass', 
      'LoginBtn': 'Login'} 

session = requests.session() 
r = session.post(url, data=values) 

# Try opening private webpage when logged in. 
r = session.get('https://verification.nws.noaa.gov/stormdat/downloads/csv/index.aspx#top') 

Любая помощь будет принята с благодарностью. Благодаря!

ответ

0

Вы просто пропустили несколько полей в своей полезной нагрузке, вы можете получить их от входа page.

<body><form name="PageForm" method="POST" action="/services/public/login.aspx" id="PageForm"> 
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUIMzc4Mzk0MzlkZF/afEu7JIuhzEtWu2QqdxDm88Un" /> 

Таким образом, ваши ценности хотел бы, как это

values = { 
    '__EVENTTARGET': '', 
    '__EVENTARGUMENT': '', 
    '__VIEWSTATE' 'Get this value from the login page', 
    '__VIEWSTATEGENERATOR' 'Get this value from the login page', 
    'UsernameBox' 'myuser', 
    'PasswordBox' 'mypass', 
    'LoginBtn' 'Login' 
}