2013-01-22 3 views
4

Мне нужно разобрать массив на веб-сайте. Часть Javascript, я хочу, чтобы разобрать выглядит следующим образом:Ruby Nokogiri Javascript Parsing

_arPic[0] = "http://example.org/image1.jpg"; 
_arPic[1] = "http://example.org/image2.jpg"; 
_arPic[2] = "http://example.org/image3.jpg"; 
_arPic[3] = "http://example.org/image4.jpg"; 
_arPic[4] = "http://example.org/image5.jpg"; 
_arPic[5] = "http://example.org/image6.jpg"; 

Я получаю весь JavaScript что-то вроде этого:

product_page = Nokogiri::HTML(open(full_url))  
product_page.css("div#main_column script")[0] 

Существует простой способ разбора всех переменных?

ответ

2

Если я правильно прочитал, вы пытаетесь разобрать JavaScript и получить массив Ruby с URL-адресами изображений, да?

Nokogiri анализирует только HTML/XML, поэтому вам понадобится другая библиотека; В беглом поиске появляется библиотека RKelly, которая имеет функцию parse, которая принимает строку JavaScript и возвращает дерево разбора.

После того, как у вас есть дерево синтаксического анализа, вам нужно будет пройти его и найти интересующие узлы по имени (например, _arPic), затем получить содержимое строки с другой стороны задания.

С другой стороны, если он не должен быть слишком надежным (и это не будет), вы можете просто использовать регулярные выражения для поиска JavaScript, если это возможно:

/^\s*_arPic\[\d\] = "(.+)";$/ 

может быть хорошим стартер регулярное выражение ,

0

Самый простой способ:

_arPic = URI.extract product_page.css("div#main_column script")[0].text 

, который может быть сокращен до:

_arPic = URI.extract product_page.at("div#main_column script").text