POST-запрос (безопасно) для загрузки CSV - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь автоматизировать загрузку отчета, сначала войдя в систему с именем пользователя и паролем, а затем отправив следующий запрос POST.

Я не хочу использовать запрос GET, так как при этом мои учетные данные отображаются в URL, а история сохраняется в браузере.Кроме того, URL не заканчивается на «.csv», поэтому я не могу передать его непосредственно в pd.read_csv («www.something.csv»).

Я потратил много времени на просмотр ссылок, и следующий, кажется, то, что мне нужно, но мой CSV не находится в web_return.content.

HTTPS POST-запрос Python, возвращающий .csv

report_id = '45'

payload = {'un': 'user.com',
               'pw': 'password',
               'export': 'Export',
               'enc': 'UTF-8',
               'xf': 'localecsv',
               'colDt_s': '1/1/2018',
               'colDt_e': '1/1/2019'}

web_return = requests.post('https://website.com/{}'.format(report_id),
                               data=payload).content

print(web_return)

df = pd.read_csv(io.StringIO(web_return.decode('utf-8')))

Я хочу, чтобы df в конце был результирующим CSV как кадр данных pandas.У меня это работает по-другому, но я чувствую, что это то, что я должен быть в состоянии сделать, и я хочу сделать это правильно.Токовый вывод действительно является кадром данных, но не является правильным содержимым:

print(df)

0                                              <html>                                                    
1                                              <head>                                                    
2       <meta HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">                                                    
3                                            <script>                                                    
4   if (this.SfdcApp && this.SfdcApp.projectOneNav...                                                    
5                      if (window.location.replace){                                                     
6   window.location.replace('https://login.website...                                                    
7                                           } else {;                                                    
8   window.location.href ='https://login.website...                                                    
9                                                  }                                                     
10                                          </script>                                                    
11                                            </head>                                                    
12                                            </html>                                                    
13                               <!-- Body events -->                                                    
14  <script type="text/javascript">function bodyOn...                                                    
15                                            </body>                                                    
16                                            </html>                                                    
17                                               <!--                                                    
18  .................................................                                                    
19  .................................................                                                    
20  .................................................                                                    
21  .................................................                                                    
22                                                -->                                                    

Любая помощь?

Спасибо миллион.

- Обновление, благодаря @Barmar, я смог отправить свой запрос в Javascript, но он говорит мне, что у меня не включен Javascript:

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
<meta HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</head>
<body>
<script>var tm=null;function lhdoredir(){tm&& . 
(window.clearTimeout(tm),tm=null);window.location.replace?       window.location.replace("https://login.website.com/45"):window.location.href="https://login.website.com/45"}window.setTimeout?tm=window.setTimeout(lhdoredir,1E3):lhdoredir()
You do not have Javascript enabled. Javascript is required to use 
website.com. Please enable Javascript, then click <a 
href="https://login.website.com/45">here</a> to continue.
</noscript>
<!-- service is in read write mode -->
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...