我是Nokogiri的新手,需要找到下面代码的选定选项。在下面复制/粘贴时,选择了粉红色选项,但 HTML 中没有任何内容表明这一点。
现在以前我用过:page.at('select[name="Color"] option:not(:first-of-type)[@selected]').text
(类似的方法可以在这里找到:Nokogiri:如何找到<选择>的选定选项? 找到所选选项的值,但是对于我尝试抓取的这个特定站点,没有selected = "selected"
.选择>
过去使用 jQuery 进行抓取时,我使用过设法绕过此问题的$('select').children("option:not(:first-of-type)").filter(":selected").text();
,但是像 page.at(".variation-trait[aria-label='Select Color'] option:selected").text
一样在 Nokogiri 中添加一个 CSS 选择器对我来说也没有用。
任何帮助将不胜感激。
<select class="variation-trait" aria-label="Select Color" id="trait-0" data-bhw="VariationsTrait:color" data-bhw-path="FeaturedDeal|deal:73dcb228-e425-11e7-bf04-00259060b5da|VariationsWidget|success:variations-displayed|VariationsTrait:color">
<option class="variation-option" value="Select Color" id="trait-0-0" data-bhc="option:select-color">
Select Color
</option>
<option class="variation-option force-display" value="Black" id="trait-0-1" data-bhc="option:black" disabled="disabled"><span class="sold-out-text">(SOLD OUT)</span>
Black
</option>
<option class="variation-option" value="White" id="trait-0-2" data-bhc="option:white">
White
</option>
<option class="variation-option" value="Blue" id="trait-0-3" data-bhc="option:blue">
Blue
</option>
<option class="variation-option" value="Gray" id="trait-0-4" data-bhc="option:gray">
Gray
</option>
<option class="variation-option" value="Pink" id="trait-0-5" data-bhc="option:pink">
Pink
</option>
</select>
如果没有[selected]选项,那么它是第一个,所以:
page.at('option[selected]') || page.at('option')