Проблема доступа к данным из логина с использованием Twill в Python 2.7 - PullRequest
0 голосов
/ 04 января 2019

Я использую старый модуль для просмотра веб-страниц в 2.7 (Twill) для извлечения страниц, содержащих некоторые данные .txt, которые я хочу зацепить в файл Excel.

Мой код сталкивается с проблемой, когда он пытается получить доступ к текстовой странице с экрана входа в систему и обращается к странице HTML, а не к самому тексту .txt.

Код использует путь, по которому хранятся .txt, и получает к ним доступ, сначала войдя на страницу / user / login. Я должен сделать это, кажется, потому что команда showforms() на главной странице дает мне это:

Form name=quick-search (#1)
## ## __Name__________________ __Type___ __ID________ __Value__________________
1     q                        text      q            Search 

Out[59]: [<Element form at 0x227c4b38>]

Что означает, что я не могу войти отсюда. Таким образом, мой код регистрирует меня на странице входа в систему следующим образом:

from email.mime.text import MIMEText
from subprocess import Popen, PIPE
import twill
from twill.commands import *

path = "https://naturalgasintel.com/ext/resources/Data-Feed/Daily-GPI/"
end = "td.txt"

go("http://www.naturalgasintel.com/user/login")
fv("2", "user[email]", user_email)
fv("2", "user[password]", user_password)
fv("2", "commit", "Login")
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 

Причина, по которой я использовал fv("2", "commit", "Login") вместо submit(), заключается в том, что когда я попадаю на страницу, при отправке мне выдается следующее сообщение:

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

Итак, я пытаюсь получить доступ к файлу данных (.txt), создав путь:

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

Я не знаю, как правильно войти на этот сайт, чтобы мне не приходилось пользоваться страницей входа пользователя, потому что я думаю, что именно это вызывает проблему.

Как я могу обойти параметр referrer, чтобы войти с главной страницы и получить правильный URL?

...