使用Ruby抓取外部javascript文件

时间:2012-02-05 16:56:39

标签: ruby web-crawler nokogiri

我需要抓取几个网址并将其内容抓取到数据库中。

已抓取的数据必须包含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数组。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您将Array#mapArray#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