Html 如何使用Ruby提取网页的内容?

Html 如何使用Ruby提取网页的内容?,html,ruby,xml,http,nokogiri,Html,Ruby,Xml,Http,Nokogiri,例如,如果我想检索乔治·克鲁尼拍摄过的电影,我会这样做: require 'net/http' require 'nokogiri' require 'rubygems' PAGE_URL = "http://www.imdb.com/name/nm0000123" # url for george clooneys profile on imdb page = Nokogiri::XML(open(PAGE_URL)) puts page.xpath("/html/body/div[1]/d

例如,如果我想检索乔治·克鲁尼拍摄过的电影,我会这样做:

require 'net/http'
require 'nokogiri'
require 'rubygems'

PAGE_URL = "http://www.imdb.com/name/nm0000123" # url for george clooneys profile on imdb
page = Nokogiri::XML(open(PAGE_URL))
puts page.xpath("/html/body/div[1]/div/div[4]/div[3]/div[3]/div[3]/div[3]/div[2]/div[2]").to_s

我使用FireBug提取了xpath,但是当我运行程序时,我在终端中只得到一个空行…所以实际上什么都没有发生?我做错了什么?或者有更好的方法吗?

这是我用来获取标题的方法:

require 'nokogiri'
require 'open-uri'

PAGE_URL = "http://www.imdb.com/name/nm0000123"
page = Nokogiri::XML(open(PAGE_URL))
page.css("div.filmo-category-section b a").each { |movie| puts movie.text }

谢谢你的回答,我现在只想得到演员标题下的标题,但是运气不好。有什么建议吗?嗯,我不太确定。使用
page.css(“div.filmo-category-section”).children.each{x|puts x.text}
获取每个div中的所有文本,但是由于字符名没有包装在任何html标记中,我无法直接使用nokogiri获取它。您可能需要抓取整个内容,并解析信息以删除所有
\n
并抓取每个相关信息。不要使用Firebug或任何基于浏览器的工具来尝试查找选择器。浏览器在显示页面之前会对标记进行修正,Firebug会反映这些变化。修正可以改变HTML,添加/改变标记,这不会出现在HTML Nokogiri中,您的解析器也会看到。使用
wget
curl
查看数据,或在命令行中使用
nokogiri
本身。此外,简化选择器。永远不需要使用长的显式CSS或XPath。在文档中找到放置标记并导航到这些标记。此外,您需要提供最小化的HMTL来演示问题。不要指望我们在远程站点上浏览整个页面。读作“及”。