我需要在Rails脚本中获取给定网站URL的所有背景图片
我曾尝试使用Nokogiri:
doc = Nokogiri::HTML(open(url)) // url - will be any website
这是网站HTML和CSS:
<h1 class="logo">
<a href="/">Website Name</a>
</h1>
.logo {
width: 193px;
height: 73px;
float: left;
background: url(/themes/site_themes/tccc/images/logo.png) no-repeat;
}
我想要实现的是从外部文件中检索徽标背景图片网址。 我们可以使用Nokogiri检索内联样式,但我一直无法找到外部样式的解决方案。
我希望使用任何Web Scrapper从所提供的网站获取所有背景图片。
我怎样才能做到这一点?
答案 0 :(得分:2)
做这样的事情来获得一个背景图像数组,其中包含该图像所属的标记,类或id的名称。
document = Nokogiri::HTML(open(path_to_html_file)
background_images = search_in_css(document.css('style'))
并创建一个私有方法,该方法将处理样式并返回带有标记,名称或ID以及该图像路径的2D数组。
private
def search_in_css(styles)
background_images = Array.new
if styles.count > 0
styles.each do |style|
style.children.each do |prop|
string = prop.to_s.delete("\n").delete("\t").delete(' ').gsub('"', "'")
each_klass = string.split("}")
each_klass.each do |el|
arr = el.split("{")
klass_name = "css_" + arr[0]
image_url = arr[1][/background-image\:url\((.*?)\)\;/m, 1].delete("'")
background_images << [ klass_name, image_url ]
end
end
end
end
return background_images.uniq
end
这个方法将遍历每一行,只将css的background-image属性放入,并将其附加到具有该类名称的数组中。