我需要抓取几个网址并将其内容抓取到数据库中。
已抓取的数据必须包含HTML和外部CSS以及JS文件。
我使用Nokogiri抓住CSS没有问题但是我无法轻易获得Javacript ..
这是我的相关代码:
...
arrJS = []
page = Nokogiri::HTML(open(url))
page.css('script').map {|link| arrJS << link['src'].to_s}
...
当我在像yahoo.com这样的网站上使用它时 - 我得到了一个与html上的javascripts无关的奇怪的arrJS数组。
有什么想法吗?
答案 0 :(得分:2)
您将Array#map
与Array#each
混淆。试试这个
arrJS = []
page = Nokogiri::HTML(open(url))
page.css('script').each do |script|
src = script['src']
arrJS << src.to_s unless src.nil?
end
这将为您提供所有src
元素的所有script
属性的内容。
相反,如果您想要内联脚本的内容,而不是源URI,则可以使用
contentJS = []
page.css('script').each do |script|
contentJS << script.content if script['src'].nil?
end