scrapy ItemLoader对象中selector属性的用途和目的是什么?

ztyzrc3y  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(150)

ItemLoader对象classs crapy.loader.ItemLoader(item=None, selector=None, response=None, parent=None,**context)用户友好的抽象,通过将字段处理器应用于抓取的数据来用数据填充项。当用选择器或响应进行示例化时,它支持使用选择器从网页中提取数据。
参数项目(scrapy.item.Item)-使用add_xpath()、add_css()或add_value()的后续调用填充的项目示例。
selector(选择器对象)--使用add_xpath()、add_css()、replace_xpath()或replace_css()方法时,从中提取数据的选择器。
response(响应对象)-用于使用default_selector_class构造选择器的响应,除非给定了选择器参数,在这种情况下,将忽略此参数。
我已经阅读了Scrapy的官方文档,但是我不明白什么时候应该使用ItemLoader对象的selecoter属性。
我理解item和response,但是在定义的解析方法下,选择器通常不足以使用loader.add_xpath等吗?

d7v8vwbk

d7v8vwbk1#

就像描述中说的那样,使用add_cssadd_xpath和其他方法时要从中提取数据的选择器。
例如,假设响应相当大,您希望嵌套选择器,以便缩小搜索字段来提取数据。选择器字段是您放置xpath表达式所应用的特定选择器的位置。
范例

def parse(self, response):
    for selector in response.xpath('....'):
        itemloader = ItemLoader(item=MyItem, selector=selector, response=response)
        itemloader.add_xpath(...)

在上面的例子中,itemloader现在知道不使用来自根的xpath表达式来提取数据,而是将其作为来自选择器的相对xpath表达式来处理。

相关问题