1

我正在尝试抓取网站结果集以创建包含该特定网站结果的表格。在此站点上正常登录时,我可以使用我的凭据访问该站点的内容。站点使用 HTTPS

但是,当我尝试通过 Power BI(以及更具体的 Power Query)检索同一站点的内容时,我会看到一个包含两列和两行的结果集,就好像该站点要求我提供凭据一样:

|--------------|-------------|
|  Username:   |             |
|--------------|-------------|
|  Password:   |             |
|--------------|-------------|

这是在我输入我的凭据后,当电源查询要求它们时(不返回任何错误输入的错误)​​。凭据输入正确。输入错误的凭据时会出错。

我已明智地尝试了以下选项查询:

  • 直接输入所需网站
  • M 中带有查询和内容选项的高级输入以强制 POST() 而不是 GET()。

高级方法 1 - 执行时显示登录表单:

let
    Source = Web.Page(
        Web.Contents(
            "https://url.htm",
            [Query=
                [mNo ="1234",form name="overviewDetailsForm", id="overviewDetailsForm", method="post"
                ]
            ]
        )
    ),
    Data0 = Source{0}[Data]
in
    Data0

方法 2 - 给出错误,因为选项只能与匿名凭据一起使用:

let
    Source = Web.Page(
        Web.Contents(
            "https://url.htm",
            [Query=
                [mNo ="1234",form name="overviewDetailsForm", id="overviewDetailsForm", method="post"
                ]
            ],
            [Content=Text.ToBinary()
            ]
        )
    ),
    Data0 = Source{0}[Data]
in
    Data0
4

1 回答 1

0

如果您使用 HTTP 调试器Fiddler,您应该能够检查浏览器在站点上发出的 HTTPS 请求。(您必须同意让 Fiddler 在您的计算机上安装根 CA 才能对您的互联网流量进行 MITM。)您的用户名/密码是否显示在 Auth 或 Headers 选项卡中?

您通常可以设置您想要的任何标头Web.Contents并且它们也可以使用 Web.Page,但请注意某些身份验证令牌会随着时间的推移而过期。

通过反复试验,您应该能够让 Power Query 发出与浏览器相同的 HTTP 请求,并且您将获得数据!

于 2015-08-18T08:25:57.280 回答