【发布时间】:2017-10-15 10:12:27
【问题描述】:
我想获取那些没有像类这样的属性名称的元素值,我在 xpath 的帮助下尝试了很多次不同的代码,但没有成功。请帮帮我。在此先感谢。
我的代码
response.xpath("//select/option[count(@class)=0]/text()").extract()
获取值的html标签
<select name="skuAndSize" class="nsg-form--drop-down exp-pdp-size-dropdown exp-pdp-dropdown two-column-dropdown selectBox" data-tooltiptext="Select a Size" required="required" data-error="Select a Size" data-has-fixed-ancestor="true" style="display: none;">
<option class="exp-pdp-size-not-in-stock" value=""></option>
<option name="skuId" value="17401288:40" data-label="(EU 40)">EU 40</option>
<option name="skuId" value="17401287:40.5" data-label="(EU 40.5)">EU 40.5</option>
<option name="skuId" value="17401286:41" data-label="(EU 41)">EU 41</option>
<option name="skuId" value="17401285:42" data-label="(EU 42)">EU 42</option>
<option name="skuId" value="17401284:42.5" data-label="(EU 42.5)">EU 42.5</option>
<option name="skuId" value="17401283:43" data-label="(EU 43)">EU 43</option>
<option name="skuId" value="17401282:44" data-label="(EU 44)">EU 44</option>
<option name="skuId" value="17401281:44.5" data-label="(EU 44.5)">EU 44.5</option>
<option name="skuId" value="17401280:45" data-label="(EU 45)">EU 45</option>
<option name="skuId" value="17401279:45.5" data-label="(EU 45.5)">EU 45.5</option>
<option name="skuId" value="17401295:46" data-label="(EU 46)">EU 46</option>
<option name="skuId" value="17401294:47" data-label="(EU 47)">EU 47</option>
<option class="exp-pdp-size-not-in-stock selectBox-disabled" name="skuId" value="17401293:47.5" data-label="(EU 47.5)">EU 47.5</option>
</select>
【问题讨论】:
-
代替 count(@class)=0 尝试 not(@class)。应该可以工作(我还没有测试过,但这就是我要写的)。
-
感谢@PrathameshSarang 的回复,但没有奏效。我试了很多次。
-
你能分享一下你是如何得到回复的吗,我已经尝试过你的 html 到我的本地文件,它适用于
response.xpath("//select/option[not(@class)]/text()") -
尊敬的 @Tiny.D 先生,当我使用 extract() 时,它会给出所有值。如果我不使用 extract 那么它只给出我需要的值。
response.xpath("//select/option[not(@class)]/text()").extract() -
所以
response.xpath("//select/option[not(@class)]/text()")为您工作?
标签: python html css xpath scrapy-spider