使用Nokogiri和Xpath提取图像链接

时间:2014-09-30 08:51:37

标签: ruby xpath nokogiri

我正在尝试使用xpath和nokogiri来提取谷歌图片的图片网址。当我右键单击一个图像并复制其xpath时,我得到以下内容:

// * [@ id中=" irc_cc"] / DIV [3] / DIV [1] / DIV [1] / DIV [2] / DIV [1] /一个/ IMG

然而,当我把它放入nokogiri xpath调用时,没有任何东西返回。关于如何捕获图像URL的任何想法?谢谢!

require "open-uri"
require "mechanize"
require "net/http"

base_url = "https://www.google.com/search?
tbm=isch&tbs=isz:lt,islt:vga&q=Analog%20Bar%20San%20Diego%20Burgers"

doc = Nokogiri::HTML(open(base_url))
doc.xpath('//*[@id="irc_cc"]/div[3]/div[1]/div[1]/div[2]/div[1]/a/img').each do |node|
  puts node
end

1 个答案:

答案 0 :(得分:1)

这是因为浏览器很可能会以不同的方式看到此页面。 Nokogiri或open-uri都不会处理javascript代码。通过将页面内容打印到stdout或文件(puts open(base_url).read)来检查页面内容,然后在http://ponderer.org/download/xpath/的帮助下构建所需的XPath

您也可以尝试使用CSS选择器而不是XPath - http://ruby.bastardsbook.com/chapters/html-parsing/

  

Nokogiri的css方法将满足您的大多数需求。对于那些网页   需要更精确的选择器,你可以跳进XPath的世界   语法并利用Nokogiri的xpath方法。