2016-05-03 7 views
0

私はNokogiri gemを使ってWebページ文書を解析しています。しかし私はAngularJSを使っているウェブサイトでそれをやろうとしています。私はそれをNokogiriにロードすると、私のブラウザでそのページを見たときのフォーマットにはならないのです。どのように私はそれが私はCSSのセレクタを介して解析することができます期待してロードすることができますか?NokogiriでAngularJSページを解析するにはどうすればよいですか?

URL:http://www.ukathletics.com/sport/m-footbl/roster/#/2015/Players/table

コード

require 'open-uri' 
require 'nokogiri' 
require 'capybara-webkit' 
require 'capybara/dsl' 
require 'byebug' 
require './ncaa_school_sites' 
require './functions' 

include Capybara::DSL 
Capybara.current_driver = :webkit 
Capybara::Webkit.configure do |config| 
    config.block_unknown_urls 
    NcaaSchoolSite.where(code: 'KYUN').order(:code).each do |school| 
    config.allow_url("*#{school.website_url}") 
    end 
end 

visit(school.roster_url) 
doc = Nokogiri::HTML.parse(body) 

byebug 
roster_table = doc.css("div.player_table table") 
headers  = retrieve_headers(roster_table.css("thead tr")) 
process_player_rows(roster_table, headers, school,"tbody td",1) 

答えて

0

私はあなたがカピバラを使用して、鋸山でページを解析しようとしている理由として困惑していますか?

+0

...一人でカピバラを使用して、あなたが

roster_table = page.find(:css, 'div.player_table table') headers = roster_table.all(:css, 'thead tr') 

などのようなもののようなものを行うことができ、私はそれについて知らなかった...ありがとう!私はもともとカピバラを使用していませんでしたが、正しく読み込まれていないように見えるページに出くわしたので、私はカピバラを通過してしまいました。 – daveomcd

+0

また、あなたが言及したコードを試しましたが、カピバラがその文書を完全にロードした場所はわかりません。だから私はあなたのコードで結果を返さない。 – daveomcd

+0

@daveomcdこれは、ドキュメントを完全に読み込むことはありません - それはcapybara-webkitが提供する "ブラウザ"でクエリを実行しています - 結果がないと言うと、ヘッダーを意味しますか?またはroster_table?ヘッダーは空の配列を返すかもしれません。なぜなら結果が見つからないので、結果が出現するのを待たずに '#all'に結果が見つからないからです。結果(xhrリクエストなどでロードされた結果)が見つかるようなものを数えることで、結果を待つようにすることができます(例:headers = roster_table.all(:css、'ad tr '、minimum:1) ' thead要素に少なくとも1つの行があるまで少し待ってからそれを返します。 –

関連する問題