• ベストアンサー

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メソッドを使ったページの内容更新の対象となっていることだと思うのですが、いかんせん不勉強で解決方法がわかりません。 どなたか詳しい方、ご教授していただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

何度かやってみましたが、 p ie.document.getelementsbytagname("td").length で、305が表示されますね。 WinXP ProSP3+IE7です。 あと、スクレイピングであれば、rubygemsのmechanizeを使ってみてはどうでしょう?

zabiora
質問者

お礼

今日改めて挑戦したら、なぜだか成功しました。 未だに昨日失敗した原因は分かりませんが、、、 rubygemsも活用していけるようにしていきたいです。

zabiora
質問者

補足

>何度かやってみましたが、 >p ie.document.getelementsbytagname("td").length >で、305が表示されますね。 そうですか…。自分はVista+IE7なのですが、ますます原因が分からなくなってしまいましたね…。 色々さらに調べてみることにします。

その他の回答 (1)

noname#149362
noname#149362
回答No.1

外しているかも知れませんが、getelementsbytagneme ではなくて getelementsbytagname では? (neme → name)

zabiora
質問者

補足

すいません、ただの転記ミスです。 誤解を招いてしまってすいません。

関連するQ&A