从需要用户名和密码但没有URL的网站下载自动报告

时间:2017-07-13 22:23:10

标签: javascript python download report

我需要编写一个脚本,允许我自动从Tableau客户门户下载“全局密钥报告”,而无需手动登录并单击链接。

以下是解释如何手动下载此报告的链接: http://kb.tableau.com/articles/howto/managing-tableau-product-keys

我知道有一些命令,如wget或类似的选项来下载文件,但我不知道如何在这种情况下使用像wget这样的东西。

如果我知道URI或能够弄清楚,那么我可以继续并弄清楚代码。然而,我的偏好是Python或Javascript,我不熟悉。

很抱歉,如果这个问题看起来很奇怪或简单,但我编写代码从网上下载文件的经验很少。

我查看了其他类似帖子,但无法理解任何内容。

我们非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

可能有一种不使用 API 的方法,但恕我直言,这会很复杂。涉及的步骤如下:

  1. 使用浏览器的开发者工具观察手动下载文件时发送到服务器的 POST 请求。
  2. 分析请求以了解如何修改和抽象它。
  3. 要么编写一个使用 wget 下载文件的 Bash 脚本,要么编写一个 python 脚本来下载文件。 Bash 会更快更简洁,python 会更复杂但提供更多灵活性。

我将跟进一些细节和指示,可能还有一个例子。我希望这有助于目前的总体方向。

好的,更新此答案以解释第 1 步。作为示例,我将从交通统计局下载一些公共机场到达数据,可在以下地址找到:https://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=236

我使用这个例子是因为那是我自己学习 POST-analysis-and-download 摄取的方式。我假设您使用的是 Chrome 或 Chromium。

  1. 转到上面的 URL。
  2. 按 Ctrl-shift-i 打开开发者工具
  3. 转到“网络”选项卡并勾选“保留日志”
  4. 在网站上,点击“下载”按钮。您将获得一个可供下载的 Zip 文件。此外,数据将开始出现在开发者工具中。
  5. 在“名称”下,单击类似于以下内容的条目:Download_Table.asp?Table_ID=236&Has_Group=3&Is_Zipped=0
  6. 在打开的部分中,查看“标题”选项卡。查找条目“表单数据”。您可以在此处查看请求的详细信息。
  7. 点击“查看源代码”。这将向您显示导致您下载的完整 POST 请求参数字符串。 8 使用 curl 或 wget 在 Bash 中编写代码,或者编写一个 python 脚本,使用带有正确参数的字符串生成下载的 post 请求。如果需要,我会在稍后详细介绍。

希望这会有所帮助。当我有更多时间时,我将更新此答案以包含如何使用 Bash/curl 下载的示例。

答案 1 :(得分:0)

好的,既然我得到的所有答案都是否定投票,我会自己发布答案。要直接从网上下载内容,您需要一个API,这意味着发布商网站应该为您提供编码方式或句柄,以便您可以连接到要从中提取的对象,数据等。网络。 在这种特殊情况下,幸运的是,没有指定的API可以自动执行下载过程。 在做了一些研究之后,我意识到Tableau连接到Salesforce来获取数据,所以我认为Tableau人员可能能够给我API详细信息,这与人们如何自动从Salesforce下载报告的方式类似。 我联系了Tableau支持团队,他们说目前没有自动下载所有密钥报告的API。 他们指导我创建了一个名为Web Data Connector的东西,我试图看看是否可以通过它自动拉动报告。 还有一些方法允许使用Python直接从HTML表格中在网页中表示网页抓取和提取数据。我不确定这是否可能,但我正在研究这两种解决方案。如果我取得任何进展,将更新这篇文章。