очистка внешних файлов JavaScript с использованием Ruby - PullRequest
1 голос
/ 05 февраля 2012

Мне нужно отсканировать несколько URL-адресов и перенести их содержимое в БД.

сканируемые данные должны содержать как HTML, так и внешние файлы CSS и JS.

Я использовал Nokogiri, чтобы без проблем получить CSS, но я не могу получить Javacript так же просто ...

вот мой соответствующий код:

...

arrJS = []
page = Nokogiri::HTML(open(url)) 
page.css('script').map {|link| arrJS << link['src'].to_s}

...

когда я использую это на таком сайте, как yahoo.com - я получаю странный массив arrJS, который не имеет отношения к javascripts в html.

есть мысли?

1 Ответ

2 голосов
/ 05 февраля 2012

Вы путаете 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
...