Http Post запрос возвращает HTML вместо данных CSV - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь получить csv с сайта aspx. Прямой ссылки на csv нет, она генерируется сервером при публикации формы.

Следующее работает правильно в Google App Script с использованием UrlFetchApp: Возвращает необработанные .csv данные.

  ..// other code omitted for brevity

  var page = UrlFetchApp.fetch(
    "https://www.mycompanyurl.com/summary.aspx", {
    "method": "POST",
    "headers": {"Cookie": myCookieData},
    "payload": {
      '_ctl0:contact:isActive': '1',
      '__VIEWSTATE': myViewstateData,
      '__EVENTTARGET': '_ctl0:Main:ButtonExport',
      '__EVENTARGUMENT': '',
      '__LASTFOCUS': '',
      '__VIEWSTATEENCRYPTED': '',
      '__PREVIOUSPAGE': ''
    }
});

Logger.log(page); // <---- prints the csv file content

Я пытался эмулировать это в библиотеке запросов Python.

..// other code omitted for brevity
..// cookies are in the session 's'

page = s.post(
  'https://www.mycompanyurl.com/summary.aspx', 
  data={
    '_ctl0:contact:isActive': '1',
    '__VIEWSTATE': myViewstateData,
    '__EVENTTARGET': '_ctl0:Main:ButtonExport',
    '__EVENTARGUMENT': '',
    '__LASTFOCUS': '',
    '__VIEWSTATEENCRYPTED': '',
    '__PREVIOUSPAGE': ''
  }
);

print(page) // <---- prints the html content of the page

Я опустил 2 другие библиотеки, которые пытался завершить с тем же результатом. axios (node.js) и запрос (node.js)

Почему запрос работает в Google Script, но не в других, более популярных библиотеках.

Возможно, я упускаю что-то простое, но после многих часов попыток использовать разные конфигурации заголовков и несколько библиотек я в растерянности.

1 Ответ

0 голосов
/ 08 мая 2018

Первое различие, которое я вижу между двумя фрагментами кода, заключается в том, что вы не передаете свои куки в версию Python.

Было бы полезно, если бы вы взглянули на HTML, полученный в ответ. Возможно, есть какое-то сообщение об ошибке (например: Пожалуйста, войдите в систему ).

Попробуйте добавить свои куки в запрос и посмотрите, поможет ли это.

...