繁体   English   中英

检索下拉列表中的项目文本 xpath

[英]Retrieve items text inside dropdown list xpath

我有一个这样的选择

<select name="super_attribute[93]" data-selector="super_attribute[93]" data-validate="{required:true}" id="attribute93" class="super-attribute-select" aria-required="true">
<option value="">Choose an Option...</option>
<option value="131">Green</option>
<option value="20364">Black</option>
<option value="20365">White</option></select>

我想使用 CSS 选择器或 Xpath 从下拉列表(绿色、黑色、白色)中获取项目文本

我尝试了以下

response.xpath("//*[(@id = 'attribute93')]").extract()

出于某种原因,它只返回了第一个值

[u'<select name="super_attribute[93]" data-selector="super_attribute[93]" data-validate="{required:true}" id="attribute93" class="super-attribute-select"><option value="">Choose an Option...</option></select>']

路径:

//select[@id="attribute93"]/option[position()>1]/text()

要选择所有<options> ,您的 CSS 查询将是:

select#attribute93 option

您不是在选择option元素,其中有几个,而是select元素。 您只在输入文档中显示一个select元素。

>>> from scrapy.selector import Selector
>>> body = """<select name="super_attribute[93]" data-selector="super_attribute[93]" data-validate="{required:true}" id="attribute93" class="super-attribute-select" aria-required="true">
... <option value="">Choose an Option...</option>
... <option value="131">Green</option>
... <option value="20364">Black</option>
... <option value="20365">White</option></select>"""
>>> response = Selector(text=body)
>>> response.xpath("//*[(@id = 'attribute93')]").extract()
['<select name="super_attribute[93]" data-selector="super_attribute[93]" data-validate="{required:true}" id="attribute93" class="super-attribute-select" aria-required="true">\n<option value="">Choose an Option...</option>\n<option value="131">Green</option>\n<option value="20364">Black</option>\n<option value="20365">White</option></select>']

输出是一个包含一个元素的列表,但它不是您在问题中发布的内容(至少在 scrapy 1.8.0 ):包括所有子option元素。

使用此现有答案中的正确 XPath 表达式:

>>> response.xpath('//select[@id="attribute93"]/option[position()>1]/text()').extract()
['Green', 'Black', 'White']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM