2016-04-21 4 views
1

私はhttp://www.pgatour.com/leaderboard.htmlページ上のスコア表からプレイヤー名を取得しようとしているが、getElementsByTagNameのは、PowerShellを使用して、それを探してると要素のテキストを取得できません。何も返しません.name.expansion CSSセレクタは私が必要とするプレイヤー名を返しますが、私が知る限り、PowerShellのCSSセレクタを使って検索する方法はありません。は、PowerShellの

また、私は$ HTML.AllElementsを使用しようとしましたが、運がありません。

このタスクを解決する最善の方法を教えてください。ありがとう!

答えて

1

問題は、ブラウザと同じようにpowershellで同じページが表示されないことです。確認するには、コードを試してください:

$HTML = Invoke-WebRequest -Uri "http://www.pgatour.com/leaderboard.html" 
$HTML.Content > leaderboard.html 

ブラウザでleaderboard.htmlを開きます。ご覧のとおり、メッセージがあります

お使いのブラウザは古くなっている可能性があります。最高のウェブサイト の経験をお持ちの場合は、ブラウザをアップデートすることをお勧めします。

リーダーボードがありません。あなたが試すことができますどのような、IE

$ie = New-Object -com InternetExplorer.Application 
#$ie.visible=$true 
$ie.navigate("http://www.pgatour.com/leaderboard.html") 
while($ie.ReadyState -ne 4) {start-sleep -m 100} #waiting for page is ready 
start-sleep -s 30 #waiting for leaderboard to load 
$ahrefs = $ie.Document.getElementsByTagName("a") 
$names = ($ahrefs | where {$_.className -eq "name expansion"}) 
$names | foreach {write-host $_.textContent} 

注意を介してコンテンツを取得するために、上記の溶液は

+0

非常に遅いですはい、それは動作します!ありがとうございました!!! – YMM

+0

ところで、なぜ私はPSで同じページを取得していないのですか?ページ自体に何か問題がありますか? – YMM

+0

PSはjavascriptを持っておらず、すべての動的コンテンツがレンダリングできないので – Harms