0

サードパーティの Web サイトから一部のデータをスクレイピングすることを承認しています。スクレイピングはうまく機能しますが、新しいログイン プロセスが原因で障害が発生しています。新しいログイン プロセスは、スマート カード、Java、および jQuery を組み合わせたものです。私の計画は、WatiN のようなものを使用して最終目標を達成することです。プログラムは何をする必要がありますか...

IE を開いて、ユーザーが証明書のログオンに移動できるようにします。ユーザーは証明書を使用してログインします。

アプリケーションはログイン後のページに移動し、スクレイピングを開始します。WatiN を使用すると、ログインしてポスト ログイン ページを開くことができますが、その後は多くのことを行うことができません。

私が理解する必要があるのは、コンソール アプリケーションを取得し、IE を開いて (手動で) ログインし、視覚的またはコードでスクレイパーに IE ウィンドウを引き継がせる方法です。理想的には、WatiN のポスト ログイン ページから Cookie と HTML を取得し、スクレイピングを開始したいと考えています。ページが変更されたため、スクレーパーに Cookie を保存する必要があります。Cookie を保存しようとするたびに、「ドキュメントが利用可能になるのを待っている間にタイムアウトになりました」というエラーが表示されます。

Browser browser = new IE();
        browser.GoTo(url);

        browser.WaitForComplete(); //does not seem to work
        string _html = browser.Html;
        var cook= browser.Eval("document.cookie");
4

1 に答える 1

0

私はあなたの質問に出くわしました。私は知っていますが、それは他の誰かを助けるかもしれません。以下を使用して、開いている Firefox セッションにアタッチします。ユーザーによるブラウジングに使用されておらず、設定が変更される可能性が低いため、私は Firefox を使用しています。

Sub AttachToOrOpenNewBrowser(ByRef ff As WatiN.Core.Browser)
    Try
        'If Browser is open then attach to browser
        ff = Browser.AttachTo(Of FireFox)(Find.First)
    Catch ex As Exception
        'Else open new Browser and attach to this NEW browser
        ff = New FireFox(Trim(url))
    End Try
End Sub

私は自分のコードからこのサブを呼び出します。それを呼び出す前に、次のように既にアタッチされている場合に備えて、ffが「何もない」ことを確認します。

Sub MainWork()
   Dim ff As WatiN.Core.Browser
   If ff Is Nothing Then AttachToOrOpenNewBrowser(ff)
   'Do your scrape
End Sub
于 2013-05-24T04:37:02.070 に答える