2017-02-02 22 views
0

The rankings page of the WTA website内のオプションタグの選択をシミュレートするために、どのように最初の100人のテニスプレーヤーのリストが表示されます。
<option>タグは、ユーザが101と200点の位置等(100人の選手のグループによる)の間でランク選手を選択できるように、オプションのリストを提示する<select>タグと共に使用されます。RBファイル

私は、このページからの情報をこすりするNokogiriを使用したいと思います。
最初の100人のプレイヤーについては、元のウェブアドレスを使用できます。私は、上記のWebアドレスへの/pag/101/pag/201/pag/301などを追加するために使用されたが、ユーザは、選手の異なる範囲を選択したときただし、URLは変更されません。トリックは機能しますが、新しいURLはあまり信頼できません。私はしばしばHTTPError: 504 Gateway Time-outエラーを受け取ります。

だから私はしかし、元のアドレスに滞在し、オプションタグからの選択をシミュレートする可能性があるかもしれません。

おそらくウェブサイトでは、ページの情報を更新するAjaxを使用しています。
ページが更新される前に、Webインスペクタを持つ<div class="ajaxLoader">要素に気付きました。

私は<option>タグの内容のXPath式が見つかりました:

//div[@id='jump1']/div[@class='jump-to']/select[@class='rankings-rank-change']/option[@value='1'] 

@valueは異なるオプションを選択して変更します。

これらの値をページからトリガし、rbファイル内でAjax呼び出しを行う方法があるのだろうかと思います。

答えて

1

開発ツールを開き、Networkタブをチェックすると、select内のオプションを変更すると、ページが他の結果をフェッチするajax呼び出しをトリガーすることがわかります。この情報を解析する

1つの戦略は、次のとおりです。

  • はアヤックス結果
  • からの結果を解析し、各ページ
  • のためのAJAX呼び出しを行うことによって選択
  • 反復からオプションの数を取得します。

URLはループ内の番号を変更する必要があるhttp://www.wtatennis.com/fragment/wtaTennis/fragments/assets/rankings/rankingsData/type/SINGLES/date/02022017/pag/ {page}です。

コードは次のようになります。

make request to first page: http://www.wtatennis.com/singles-rankings 
parse the first 100 results, get data 
get the number of pages from the select 
make request to i page: http://www.wtatennis.com/fragment/wtaTennis/fragments/assets/rankings/rankingsData/type/SINGLES/date/02022017/pag/i 
    parse results from this one 
    next index on loop 
now you have all the data 

は、この情報がお役に立てば幸いです。

+0

どこのURLを取得しましたか?私はそれが日付が含まれて気づいた。固定URLではないと思うかもしれませんが、8つの乱数を組み合わせて使用​​しているようです。 – Asarluhi

+1

私がselectで最初のオプションを選択したとき、それがURLでした。 – MurifoX

関連する問題