【发布时间】:2016-05-17 09:53:46
【问题描述】:
例如,如果我想检索乔治克鲁尼出演的电影,我会这样做:
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,但是当我运行程序时,我只是在终端中得到一个空行......所以实际上什么都没有发生?我究竟做错了什么?还是有更好的办法?
【问题讨论】:
-
不要使用 Firebug 或任何基于浏览器的工具来尝试查找选择器。浏览器在显示页面之前对标记进行修复,Firebug 将反映这些更改。修复程序可以更改 HTML,添加/更改标签,这些标签不会出现在 HTML Nokogiri 中,或者您的解析器会看到。而是使用
wget或curl来查看数据,或者在命令行中使用nokogiri本身。此外,简化您的选择器。永远不需要使用长的显式 CSS 或 XPath。在文档中找到地标并导航到这些地标。 -
另外,您需要提供最小化的 HMTL 来说明问题。不要指望我们在远程站点上浏览整个页面。阅读“How to Ask”和“minimal reproducible example”。
标签: html ruby xml http nokogiri