2016-09-21 5 views
1

私はrubyスクリプトを使ってpgatour.comからいくつかの履歴データを取得しようとしていますが、データを取得することはできません。ruby​​、nokogiri、xpath、pgatour.com

私はこれまでに議論されていることを知っていますが、私は出て来て空白になるすべての解決策を試しましたので、今私は私が考えることができる最も基本的なものそれが私かウェブサイトかどうかを調べる。

私は今ちょうどテーブルの一つの要素をつかむと、その後のxpathを取得するには、コンソール

にそれを印刷しようとしています、私は、Chromeデベロッパーツールを開いたテーブルでスコアを見つけたとする右クリックXpathをコピーして、ちょうどその直接コードで使用されるが、それでも何も

require 'open-uri' 
require 'nokogiri' 

url = "http://www.pgatour.com/tournaments/safeway-open/past-results.html" 
html = open(url) 
doc = Nokogiri::HTML(html) 
puts doc.xpath('//*[@id="pastResultsData"]/ul/li[1]/table/tbody/tr[2]/td[5]').text 

私が何か間違ったことをやっていないアムますか?または上記のような単純なソリューションが動作しないように構造化されたサイトですか?

+0

ルール#1:セレクタやHTMLのレイアウトを見つけるために、ブラウザの出力やブラウザに埋め込まれたツールに頼らないでください。ブラウザはHTMLを混乱させる。代わりに、コマンドラインで 'wget'、' curl'や 'nokogiri'を使って、そこを見て、Nokogiriが見ているものを正確に見てください。オッズはDHTMLが含まれているので非常に良いので、JavaScriptインタプリタが読み込むまで、あなたが望むものはページに表示されません。 –

答えて

0

これは本当に HTMLが静的か動的かを最初に確認することが重要です。そこそうする多くの方法がありますが、非常に簡単なテストでは、コマンドラインで鋸山を使用することです:#pastResultsData探し

>nokogiri 'http://www.pgatour.com/tournaments/safeway-open/past-results.html' 
Your document is stored in @doc... 
Welcome to NOKOGIRI. You are using ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]. Have fun ;) 
>> @doc.at('#pastResultsData') 
<div id="pastResultsData" class="clearfix module-tournament-past-results"/> 

は、そのIDを持つすべてのタグを検索します。返される値は、<div>タグが空であることを示します。これは、通常、後でDHTMLで埋められるコンテナとして使用されるのを待機していることを意味します。

そして、Nokogiriはあなたを助けません。コンテンツを取得して解析するか、JavaScriptを解析するものを使用する必要があります。

+0

ありがとう、それは非常に有用です –

関連する問題