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)
...一人でカピバラを使用して、あなたが
などのようなもののようなものを行うことができ、私はそれについて知らなかった...ありがとう!私はもともとカピバラを使用していませんでしたが、正しく読み込まれていないように見えるページに出くわしたので、私はカピバラを通過してしまいました。 – daveomcd
また、あなたが言及したコードを試しましたが、カピバラがその文書を完全にロードした場所はわかりません。だから私はあなたのコードで結果を返さない。 – daveomcd
@daveomcdこれは、ドキュメントを完全に読み込むことはありません - それはcapybara-webkitが提供する "ブラウザ"でクエリを実行しています - 結果がないと言うと、ヘッダーを意味しますか?またはroster_table?ヘッダーは空の配列を返すかもしれません。なぜなら結果が見つからないので、結果が出現するのを待たずに '#all'に結果が見つからないからです。結果(xhrリクエストなどでロードされた結果)が見つかるようなものを数えることで、結果を待つようにすることができます(例:headers = roster_table.all(:css、'ad tr '、minimum:1) ' thead要素に少なくとも1つの行があるまで少し待ってからそれを返します。 –