1

Web サイトの結果セットをスクレイピングして、その特定のサイトの結果を含むテーブルを作成しようとしています。このサイトへの通常のログインでは、資格情報を使用してサイトのコンテンツにアクセスできます。サイトは HTTPS を使用しています

ただし、Power BI (より具体的には Power Query) を使用してこの同じサイトのコンテンツを取得しようとすると、サイトが資格情報を要求しているかのように、2 つの列と 2 つの行の結果セットが表示されます。

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

これは、パワークエリが資格情報を要求したときに資格情報を入力した後です(入力エラーのエラーは返されません)。資格情報が正しく入力されている。不正な資格情報を入力すると、エラーが発生します。

次のオプションのクエリを試しました:

  • 希望のサイトを直接入力
  • GET() の代わりに POST() を強制する、M のクエリおよびコンテンツ オプションを使用した高度な入力。

高度な方法 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 要求を検査できるはずです。(インターネット トラフィックを MITM するために、Fiddler がマシンにルート CA をインストールすることに同意する必要があります。) ユーザー名/パスワードは [認証] タブまたは [ヘッダー] タブに表示されますか?

通常、必要な任意のヘッダーを設定できWeb.Contents、それらも機能し Web.Pageますが、一部の認証トークンは時間の経過とともに期限切れになることに注意してください。

試行錯誤を繰り返すことで、Power Query でブラウザーと同じ HTTP 要求を実行できるようになり、データを取得できるようになります。

于 2015-08-18T08:25:57.280 に答える