Nokogiri查找图像SRC



我需要从Facebook获取Avatar的SRC属性。

doc = Nokogiri::HTML(open('http://www.facebook.com/zuck'))

然后我尝试了:

 avatar = doc.css('.photoContainer img')

但收到一个空的结果。我该怎么做才能获得IMG SRC?为什么我的方法不起作用?

我还试图通过XPath找到所有IMG,但仍然收到空的结果:

Nokogiri::HTML(open('http://www.facebook.com/zuck')).xpath("//img/@src").each do |src|
  puts src                                                  
end

问题是您要访问的.photoContainer DIV不在页面的实际HTML中,它通过JavaScript插入DOM,因此Nokogiri看不到它。Nokogiri只能解析静态HTML和XML。

如果要访问JavaScript生成的DOM内容,则可能需要尝试使用Watir或Selenium等自动化的Web浏览工具。另请参阅" Nokogiri Parse Ajax负载内容"。

更新:

如果您熟悉使用Capybara的集成测试,则还可以将其选择器用作浏览工具(例如Selenium)的包装器,直接使用它可能有点棘手。

因此,在控制台中:

require 'capybara'
require 'capybara/dsl'
include Capybara::DSL
Capybara.default_driver = :selenium

然后,您可以通过关闭弹出窗口,然后通过CSS访问元素:

首先获得元素
visit('http://www.facebook.com/zuck')
find('a.layerCancel').click
find('.photoContainer img')['src']
#=> "http://profile.ak.fbcdn.net/hprofile-ak-ash3/c23.1.285.285/s160x160/73273_773684942011_2125564_n.jpg"

相关内容

  • 没有找到相关文章

最新更新