- ベストアンサー
AJAXを使用したサイトに対するgetelementsbytagname("td")について
プログラミング初心者です。 fifiaのランキングのページ(http://www.fifa.com/worldfootball/ranking/lastranking/gender=m/fullranking.html)を対象にして、スクレイピングを行おうとし、 require("win32ole") ie =WIN32OLE.new("InternetExplorer.Application") でIEオブジェクトを取得し、 ie.visible =true ie.Navigate("http://www.fifa.com/worldfootball/ranking/lastranking/gender=m/fullranking.html") while ie.busy == true sleep 0.1 end ここまではいいのですが、表の中の値を取得しようと ie.document.getelementsbytagneme("td") を実行してみてもnilが帰ってきてしまいます。 HTMLのソースを表示してみても<td>タグは含まれているはずなのですが、試しにie.document.getelementsbytagname("td").lengthを実行してみると0が返ってきてしまい、どうしたらいいのかさっぱりわからない状態です。 ie.document.getelementsbytagname("div")などはちゃんと機能するので、おそらく問題の原因は<td>タグがAJAX.updaterメソッドを使ったページの内容更新の対象となっていることだと思うのですが、いかんせん不勉強で解決方法がわかりません。 どなたか詳しい方、ご教授していただけないでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
何度かやってみましたが、 p ie.document.getelementsbytagname("td").length で、305が表示されますね。 WinXP ProSP3+IE7です。 あと、スクレイピングであれば、rubygemsのmechanizeを使ってみてはどうでしょう?
その他の回答 (1)
外しているかも知れませんが、getelementsbytagneme ではなくて getelementsbytagname では? (neme → name)
補足
すいません、ただの転記ミスです。 誤解を招いてしまってすいません。
お礼
今日改めて挑戦したら、なぜだか成功しました。 未だに昨日失敗した原因は分かりませんが、、、 rubygemsも活用していけるようにしていきたいです。
補足
>何度かやってみましたが、 >p ie.document.getelementsbytagname("td").length >で、305が表示されますね。 そうですか…。自分はVista+IE7なのですが、ますます原因が分からなくなってしまいましたね…。 色々さらに調べてみることにします。