2014-09-24 59 views
0

我試圖用引入nokogiri湊這個頁面:http://www.tudou.com/home/_48712163/item無法使用引入nokogiri刮頁面

我們的目標是在這個頁面的視頻信息(TITL,HREF等)

的HTML是:

<div class="pack pack_album2" data-stat-role="ck" data-stat-href="http://www.tudou.com/programs/view/e3jLsLPGct0/"></div> 

我瞄準了.pack屬性:

url = 'http://www.tudou.com/home/_48712163/item' 
doc = Nokogiri::HTML(open(url)) 
puts doc.css("title").text 
doc.css(".pack").each do |item| 
    #get video info 
    title = item.css(".txt a")[0]['title'] 
    href = item.at(".txt a")[0]['href'] 
    puts title 
    puts href 
end 

但是,結果返回說.pack是零級。

實際上,我試過puts doc.css(".page-container").to_s,.page-container.pack的父div。返回結果顯示裏面沒有.pack

如何獲取.pack的內容?

回答

0

您需要加載JavaScript。如果您習慣使用JavaScript,我建議使用Phantomjs。如果Ruby是您更容易,你可以使用的Watir:

require 'watir-webdriver' 
require 'nokogiri' 

$browser = Watir::Browser.start "http://www.tudou.com/home/_48712163/item" 

$page_html = Nokogiri::HTML.parse($browser.html) 

video_info = $page_html.css("#xpath") 

你可以通過使用無頭的寶石,這取決於你有什麼樣的操作系統上運行這個無頭。

require 'watir-webdriver' 
require 'nokogiri' 
require 'headless' 

headless = Headless.new 

headless.start 
$browser = Watir::Browser.start "http://www.tudou.com/home/_48712163/item" 

$page_html = Nokogiri::HTML.parse($browser.html) 

video_info = $page_html.css("#xpath") 
+1

您可以使用PhantomJS使用Ruby:參見[PhantomJS寶石(https://rubygems.org/gems/phantomjs)和[鬼驅人(https://rubygems.org/gems/poltergeist)。 – 2014-09-25 01:48:26

+0

我知道你可以,我只是沒有任何示例代碼來使用它。沒有太多需要使用PhantomJS。它看起來很酷。 – Duck1337 2014-09-25 17:23:02