我有一个xpath表达式,它导致页面上的“product”元素(实际上是HTML5微数据)。嵌套在此元素下的是产品名称,描述,价格等的各种其他元素。
目前我将根选择器对象传递给Item Loader,然后构造一个非常长的xpath语句来检索产品属性,例如。
l.add_xpath('name', {LONG XPATH TO PRODUCT ELEMENT} + {LONG XPATH TO NAME ELEMENT})
l.add_xpath('price', {LONG XPATH TO PRODUCT ELEMENT} + {LONG XPATH TO PRICE ELEMENT})
这在xpath处理方面似乎效率很低,有没有办法告诉ItemLoader从给定节点开始?或者我是否需要编写自己的ItemLoader来处理这种情况?感谢
答案 0 :(得分:4)
这实际上非常明显,现在我对选择器了解得更多。 selector.xpath()返回一个选择器列表,所以我可以这样做:
productSelector = selector.xpath({xpath to product})[0] # assumes match
l = ItemLoader(item=productItem, selector=productSelector)
l.add_xpath('name', {xpath to product name})