0
我正在使用Nokogiri gem來解析網頁文檔。然而,我試圖在使用AngularJS(我相信)的網站上做到這一點,當我將它加載到Nokogiri時,它沒有格式化爲我在瀏覽器中訪問該頁面時看到的格式。我如何使它加載,因爲我可以預期,所以我可以通過CSS選擇器解析它?如何解析Nokogiri的AngularJS頁面?
網址: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
另外,我嘗試了你提到的代碼,但是我沒有看到Capybara在哪裏完全加載了文檔。所以我沒有回到你的代碼結果。 – daveomcd
@daveomcd它沒有完全加載文件 - 它在capybara-webkit提供的「瀏覽器」中查詢它 - 當你說沒有結果時,你的意思是在頭文件中?或roster_table?標題可能會返回一個空數組,因爲找不到結果對'#all'有效,因此它不會等待結果出現。你可以使它等待結果(通過xhr請求等加載)出現,通過給它一些東西來找到它,例如:header = roster_table.all(:css,'thead tr',minimum:1)稍等一會,直到thead元素中至少有一行,然後返回它。 –