使用 Nokogiri 找到了正确的节点,但需要进一步搜索

Got the right node with Nokogiri, but need to search further

我正在使用这个。

doc = Nokogiri::HTML(open(url))
pic = doc.search "[text()*='hiRes']"

获取此脚本节点:

<script type="text/javascript">
var data = {
'colorImages': { 'initial': 
[{"hiRes":"http://ecx.images-joes.com/images
/I/71MBTEP1W9L._UL1500_.jpg","thumb":"http://ecx.images-joes.com/images
/I/41xE2XADIvL._US40_.jpg","large":"http://ecx.images-joes.com/images
/I/41xE2XADIvL.jpg","main":{"http://ecx.images-joes.com/images
/I/71MBTEP1W9L._UX395_.jpg":[395,260],"http://ecx.images-joes.com/images
/I/71MBTEP1W9L._UX500_.jpg":[500,329],"http://ecx.images-joes.com/images
/I/71MBTEP1W9L._UX535_.jpg":[535,352],"http://ecx.images-joes.com/images
/I/71MBTEP1W9L._UX575_.jpg":[575,379]}

并且节点从那里继续前进..

但我唯一需要取出的是包含字符串的整个 URL。 "UL1500" 或 "hiRes:" 之后的 URL.. 例如。 http://ecx.images-joes.com/images/I/71MBTEP1W9L.UL1500.jpg

我查找了 Nokogiri returns 的 class,它是 Nokogiri::XML::NodeSet

但我不确定如何与它交互才能获得我需要的东西?

谢谢

是的。由于一般情况,它是一个 NodeSet。

参见:http://www.rubydoc.info/github/sparklemotion/nokogiri/master/Nokogiri/XML/NodeSet#children-instance_method

在这种情况下,您可以尝试:

pic.children.first.content

我从仅使用 Nokogiri 到使用正则表达式..但最终找到了这个并且它像魔术一样工作!!