Использование Twill для захвата.txt со страницы входа Python
Я использую Twill для извлечения страниц, которые содержат требуемые данные.txt, поэтому я могу сохранить их в виде файла Excel. Данные защищены паролем, поэтому я вхожу с /user/login
стр.
Мой код сталкивается с проблемой, когда он пытается получить доступ к текстовой странице с экрана входа в систему и сталкивается с кирпичной стеной HTML, а не с самим.txt.
Когда я запускаю логин:
path = "https://naturalgasintel.com/ext/resources/Data-Feed/Daily-GPI/"
end = "td.txt"
go("http://www.naturalgasintel.com/user/login")
showforms()
fv("2", "user[email]", user_email)
fv("2", "user[password]", user_password)
fv("2", "commit", "Login")
datafilelocation = path + year + "/" + month + "/" + date + end
go(datafilelocation)
Когда мой код попадает в go(datafilelocation)
Я получаю это:
==> at https://www.naturalgasintel.com/user/login?referer=%2Fext%2Fresources%2FData-Feed%2FDaily-GPI%2F2018%2F12%2F20181221td.txt
Out[18]: u'https://www.naturalgasintel.com/user/login?referer=%2Fext%2Fresources%2FData-Feed%2FDaily-GPI%2F2018%2F12%2F20181221td.txt'
Так что это указывает на referer
а не текст, когда я действительно хочу попасть на страницу:
https://naturalgasintel.com/ext/resources/Data-Feed/Daily-GPI/2018/12/20181221td.txt
Причину я использовал fv("2", "commit", "Login")
вместо submit()
это то, что когда я попадаю на страницу, это дает мне это:
showforms()
Form name=quick-search (#1)
## ## __Name__________________ __Type___ __ID________ __Value__________________
1 q text q Search
Form #2
## ## __Name__________________ __Type___ __ID________ __Value__________________
1 utf8 hidden (None) ✓
2 authenticity_token hidden (None) pnFnPGhMomX2Lyh7/U8iGOZKsiQnyicj7BWT ...
3 referer hidden (None) https://www.naturalgasintel.com/ext/ ...
4 popup hidden (None) false
5 user[email] text user_email
6 user[password] password user_pas ...
7 user[remember_me] hidden (None) 0
8 user[remember_me] checkbox user_rem ... None
9 commit submit (None) Login
Тогда это говорит мне после того, как я submit()
:
Note: submit is using submit button: name="commit", value="Login"
Как лучше всего решить эту проблему?
1 ответ
Если вы будете в порядке, используя Mechanize вместо Twill, сделайте следующее:
import mechanize
username = ""
password = ""
login_post_url = "http://www.naturalgasintel.com/user/login"
internal_url = "https://naturalgasintel.com/ext/resources/Data-Feed/Daily-GPI/2018/12/20181221td.txt"
browser = mechanize.Browser()
browser.open(login_post_url)
browser.select_form(nr = 1)
browser.form['user[email]'] = username
browser.form['user[password]'] = password
browser.submit()
response = browser.open(internal_url)
print response.read()