我的目标是抓住以下代码:
Select Size:</b>
<select name="option[225]">
<option value=""> --- Please Select --- </option>
<option value="480">UK 11 </option>
<option value="478">UK 8 </option>
<option value="477">UK 7 </option>
</select>
我面临两个问题: 1)“选项[225]中的值对于该网站上的所有页面都不是恒定的,并且每个产品都会发生变化。
2)无论如何,我可以在每个值之间使用分号分隔符存储数据。 我希望以下列方式显示数据:
UK 11;UK 8;UK 7
答案 0 :(得分:1)
>>> ';'.join(map(str.strip, sel.xpath('//option[string-length(@value)!=0]/text()')))
'UK 11;UK 8;UK 7'
//
用于从文档根目录开始选择所有option
标记,string-length
过滤掉第一个空名称选项,';'.join(...)
用;
连接生成元素{{1}} 1}}他们之间
答案 1 :(得分:1)
如果“选择大小:”在您想要选择的select/option
之前保持不变,则可以尝试这样的XPath表达式:
xpath_expression = """//b[contains(., "Select Size:")]
/following-sibling::select[starts-with(@name, "option[")][1]
/option[@value != ""]/@value"""
然后,正如@Guy建议的那样,你可以使用:
u";".join([val.strip() for val in sel.xpath(xpath_expression).extract()])