我试图使用Nokogiri来抓取这个页面:http://www.tudou.com/home/_48712163/item
目标是此页面中的视频信息(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 :(得分:1)
您需要加载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 :(得分:0)
网站使用Ajax加载内容。
您可以在http://js.tudouui.com/v3/dist/js/page/home/v2/main_33.js
中查看Ajax调用并处理HTML内容复制并找到“pack pack_album2”。 使用Nokogiri无法获取Ajax内容。