2016-12-02 5 views
0

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

import requests, lxml.html 
s = requests.session() 

url = "https://my.emich.edu" 

login = s.get(url) 

login_html = lxml.html.fromstring(login.text) 
hidden_inputs = login_html.xpath(r'//form//input[@type="hidden"]') 
form = {x.attrib["name"]:x.attrib["value"] for x in hidden_inputs} 
form["username"] = "myusernamge" 
form["password"] = "mypassword" 
form["submit"] = "LOGIN" 

response = s.post("https://netid.emich.edu/cas/loginservice=https%3A%2F%2Fmy.emich.edu%2Fc%2Fportal%2Flogin",form) 
response = s.get("http://my.emich.edu") 

f = open("result.html","w") 
f.write(response.text) 

print response.text 

я ожидал, что response.text даст мне мою собственную страницу счета студента вместо того, что он дает мне бревно требование страницы. Может ли кто-нибудь помочь мне в этом вопросе? BTW это не домашнее задание

+0

Вы можете сравнить запрос, сделанный вами с фактическим запросом, выполняемым вашим браузером? Вы пропустили какие-либо поля формы? –

+0

@paradox Что произойдет, если вы снова спросите домашнюю страницу после того, как вы успешно разместили ее? Откуда вы знаете, что ваш пост прошел успешно? – David542

+0

@paradox - также, это не сообщение url https://my.emich.edu/c/portal/login? – David542

ответ

1

Здесь есть несколько вариантов, и я думаю, что ваш подход к запросам можно сделать намного проще, выполнив вход вручную и копируя заголовки.

  1. Используйте скриптовый пакет python, такой как http://wwwsearch.sourceforge.net/mechanize/, чтобы очистить сайт.
  2. Используйте браузер-эмулятор, такой как http://casperjs.org/. Используя это, вы можете в основном делать все, что вы можете сделать в браузере.
  3. Мое предложение здесь состояло в том, чтобы перейти на сайт, войти в систему, а затем открыть консоль разработчика и скопировать эти заголовки/файлы cookie в ваши заголовки/файлы cookie. Таким образом, вы можете просто жестко запрограммировать «уже прошедший проверку запрос», и он будет работать нормально. Обратите внимание, что этот метод является наименее надежным для создания надежных ежедневных выскабливаний, но если вы ищете что-то, что будет самым быстрым в реализации и будет работать до истечения срока аутентификации, используйте этот метод.

Кроме того, после успешного завершения публикации вам понадобится зарегистрированная домашняя страница (снова).

+0

Я пробовал механизировать и его все еще не давал ожидаемого результата – paradox

 Смежные вопросы

  • Нет связанных вопросов^_^