Uso de Twill para capturar .txt desde la página de inicio de sesión de Python

Estoy usando Twill para recuperar páginas que contienen datos .txt deseados en ellos para poder almacenarlos como un archivo de Excel. Los datos están protegidos por contraseña, así que estoy iniciando sesión desde la página /user/login .

Mi código se encuentra con el problema en el que intenta acceder a la página de texto desde la pantalla de inicio de sesión y se topa con un muro de bloques de HTML en lugar del propio .txt.

Cuando ejecuto el inicio de sesión:

 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) 

Cuando mi código se go(datafilelocation) obtengo esto:

 ==> 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' 

Así que apunta al referer lugar del texto real cuando realmente quiero llegar a la página:

     https://naturalgasintel.com/ext/resources/Data-Feed/Daily-GPI/2018/12/20181221td.txt 

    La razón por la que usé fv("2", "commit", "Login") lugar de submit() es que cuando llego a la página me da esto:

    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 

    Entonces me dice que después de submit() :

     Note: submit is using submit button: name="commit", value="Login" 

    ¿Cuál es la mejor solución para resolver este problema?

    Si no estaría bien usar Mechanize en lugar de Twill, pruebe lo siguiente:

     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()