Я пытаюсь соскрести спортивную страницу CBS для данных выстрела в НБА. Вот страница, с которой я начинаю работать и используя ее в качестве образца: http://www.cbssports.com/nba/gametracker/shotchart/[email protected]Ruby newb: как извлечь подстроку?
В источнике я нашел строку, содержащую все необходимые мне данные. Эта строка в исходном коде веб-страницы находится непосредственно под var CurrentShotData = new.
Что я хочу, это превратить эту строку в источник в строку, которую я могу использовать в ruby. Тем не менее, у меня проблемы с синтаксисом. Вот что у меня есть.
require 'nokogiri'
require 'mechanize'
a = Mechanize.new
a.get('http://www.cbssports.com/nba/gametracker/shotchart/[email protected]') do |page|
shotdata = page.body.match(/var currentShotData = new String\(\"(.*)\"\)\; var playerDataHomeString/m)[1].strip
print shotdata
end
Я знаю, что я должен делать это неправильно ... это так кажется излишне сложным и на вершине, что он не работает для меня. Может ли кто-нибудь просветить меня простым способом получить эту строку в Ruby?
Это не сработало. Может быть, есть разрыв строки между «)»; и "var playerDataHomeString"? – user3000487
@ user3000487 можете ли вы разместить пример допустимого значения 'page.body'? – alfasin
Допустимое значение? Не совсем уверен, что это значит. Когда я помещаю только файл page.body, а не весь этот материал, он печатает весь исходный код страницы. Мне просто нужно иметь возможность искать строку, являющуюся исходным кодом, и извлекать этот набор чисел. Редактировать: Извините, теперь он работает. Проблема заключалась в разрыве линии, но благодаря вашей ленивой оценке мне даже не нужно ничего, кроме «)». Спасибо. – user3000487