none
PowerShell $ieのbodyをstringに RRS feed

  • 質問

  • こんにちは。
    あるページをロードしてあって、

    $html = $ie.document.body.innerHTML
    $a = Select-String -inputObject $html -pattern " <b><u>AAABBB</u>: <br /> "
    $a[-1].ToString().Split(":")

    を実行すると
    $htmlにそのページのbody textがうまく入りません。
    何がまちがっているのでしょうか?
    2008年2月8日 1:34

回答

すべての返信

  • こんばんは、吉岡です。

     

     pjo22 さんからの引用
    こんにちは。
    あるページをロードしてあって、

    $html = $ie.document.body.innerHTML
    $a = Select-String -inputObject $html -pattern " <b><u>AAABBB</u>: <br /> "
    $a[-1].ToString().Split(":")

    を実行すると
    $htmlにそのページのbody textがうまく入りません。
    何がまちがっているのでしょうか?

     

    意図を正しく理解できていないかもしれませんが、

    $html変数に取得する際、Bodyタグ部分も含めたいという意味でしょうか。

     

    だとすると、innerHTML の代わりにouterHTMLを利用すればBodyタグも取得できます。

    $html = $ie.document.body.outerHTML

     

    _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
     Microsoft MVP for Data Center Management
      Admin Frameworks  (Jul 2006 - Jun 2008)
     吉岡 洋(Yoshioka Hiroshi)
     E-Mail: newpops@bf.mbn.or.jp
     Blog:http://d.hatena.ne.jp/newpops/
    _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

    2008年2月12日 11:36
  • 吉岡さま
    コメントありがとうございます。

    >$html変数に取得する際、Bodyタグ部分も含めたいという意味でしょうか。

    説明不測ですいません。そうではなく、Select-String を実行するときに
    $htmlに何も入っておらずうまくいきませんでした。という意味です。
    -inputObject $html がいけないのでしょうか?
    2008年2月12日 15:28
  • 吉岡です。

     

     pjo22 さんからの引用
    吉岡さま
    コメントありがとうございます。

    >$html変数に取得する際、Bodyタグ部分も含めたいという意味でしょうか。

    説明不測ですいません。そうではなく、Select-String を実行するときに
    $htmlに何も入っておらずうまくいきませんでした。という意味です。
    -inputObject $html がいけないのでしょうか?

     

    $htmlに何も入っていない、という問題なのですね。

     

    $html = $ie.document.body.innerHTML
    の直後に、

    $html -eq $null を実行してみてください。

     

    もし、Trueが返る場合は、HTMLの内容を取得できていません。

    おそらく、ページのロードが完了する前に、

    $html = $ie.document.body.innerHTML

    が実行されているのだと思います。

     

    ページ読み込みが完了するまで、以下のようにWaitする処理を入れると

    うまくいくと思います。

     

    Code Snippet

     

    $ie = New-Object -Com InternetExplorer.Application
    $ie.navigate2("http://www.google.co.jp")
    While($ie.Busy)
    {
        Start-Sleep -milliseconds 100
    }
    $html = $ie.document.body.innerHTML

     

     

    _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
     Microsoft MVP for Data Center Management
      Admin Frameworks  (Jul 2006 - Jun 2008)
     吉岡 洋(Yoshioka Hiroshi)
     E-Mail: newpops@bf.mbn.or.jp
     Blog:http://d.hatena.ne.jp/newpops/
    _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

     

    2008年2月12日 16:41
  • 吉岡さま

    コメントありがとうございます。

    海外でも同じような現象が確認されました。

    $ieにfocusをあてても、focusが外れるという現象です。
    PowerShellのVista/IE7に関して問題があるそうです。

    海外のPowerShell Forumでたずねたところコメントがありました。
    http://www.systemscript.com/forumps1us/forum_posts.asp?TID=17&OB=DESC

    http://www.systemscript.com/forumps1us/forum_posts.asp?TID=16&PID=58#58

    この問題があるとVistaでPowerShell+IE7を使えないですね。
    これは解決される可能性はあるのでしょうか?




    2008年2月13日 23:18
  • 解決しました。

    PowerShellを管理者権限で実行すれば正常に動作します。
    2008年2月14日 13:38