我正在使用Nokogiri从http://www.englandgallery.com/artists.php中删除艺术家名单。我需要使用Watir,因为页面使用javascript加载艺术家。 我的代码看起来像这样
browser = Watir::Browser.new(:phantomjs)
browser.goto "http://www.englandgallery.com/artists.php"
browser.execute_script("javascript:loadContent('ALL');")
indexPage = Nokogiri::HTML(browser.html)
artists = indexPage.css('a.artistlink')
artists.each do |artist|
puts artist.text
end
默认情况下,页面仅显示当代艺术家,因此您需要执行js来加载所有艺术家。我确信loadContent('ALL')
被执行并实际将所有艺术家加载到页面中,但只有当代艺术家被选为artists
数组。我错过了什么?我是否需要以某种方式重新加载浏览器以获取当前的DOM?
答案 0 :(得分:0)
似乎在执行javascript:loadContent('ALL');
之后需要一些时间才能实际更新列表。您可以尝试sleep
几秒钟。
browser = Watir::Browser.new(:phantomjs)
browser.goto "http://www.englandgallery.com/artists.php"
browser.execute_script("javascript:loadContent('ALL');")
sleep 5
indexPage = Nokogiri::HTML(browser.html)
artists = indexPage.css('a.artistlink')
artists.each do |artist|
puts artist.text
end