Използвах Ruby и Nokogiri, за да изтегля данни от URL адрес, подобен на този, от уебсайта на Hollister: http://www.hollisterco.com/webapp/wcs/stores/servlet/TrackDetail?storeId=10251&catalogId=10201&langId=-1&URL=TrackDetailView&orderNumber=1316358
Моят скрипт изглежда така в момента:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
page = Nokogiri::HTML(open("http://www.hollisterco.com/webapp/wcs/stores/servlet/TrackDetail?storeId=10251&catalogId=10201&langId=-1&URL=TrackDetailView&orderNumber=1316358"))
puts page.css("h3[data-property=GLB_ORDERNUMBERSYMBOL]")[0].text
Проблемът ми е, че страницата на Hollister има някакъв вид асинхронно зареждане на данни, така че когато моят скрипт проверява областта на страницата с данни, специфични за поръчката, за елемент от страницата, той все още не съществува. Т.е., <h3>
с data-property=GBL_ORDERNUMBERSYMBOL
все още не съществува, но в браузъра, ако го оставите да се зареди за още десет секунди, DOM и HTML се променят, за да отразят конкретните подробности за поръчката.
Кой е най-добрият начин за улавяне на тези данни, които се зареждат след факта? Опитах да използвам watir-webdriver, но не съм сигурен какво трябва да направя, за да заработи и той.