【发布时间】:2012-07-17 15:17:05
【问题描述】:
我一直在使用 Ruby 和 Nokogiri 从一个类似于 hollister 网站的 URL 中提取数据: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,但也不确定我需要做什么才能使其正常工作。
【问题讨论】:
-
我认为你的意思是 AJAX 用于异步加载。
-
确保您遵守他们的使用政策。这对我来说并不明显,因为他们没有 robots.txt,但这并不意味着您不必阅读他们的条件。
标签: ruby screen-scraping nokogiri watir watir-webdriver