使用Scrapy刮擦大小信息的Xpath

时间:2014-02-10 11:22:36

标签: xpath web-scraping scrapy

我的目标是抓住以下代码:

 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

2 个答案:

答案 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()])