如何使用ItemLoader在item中放置链接?

2024-04-26 02:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用ItemLoader将链接保存到item中

基本上,我需要转换此代码:

def parse(self, response): 
for casa in response.css('div.posting-card'):
    item = ZonapropItem()
    item['link'] = response.urljoin(casa.css('a.go-to-posting::attr(href)').get())
    yield item

进入:

def(parse, response):
for casa in response.css('div.posting-card'):
    loader = ItemLoader(ZonapropItem(),casa)
    loader.add_??? ('link', '???')
    yield loader.load_item()

谢谢你的回答


Tags: indivforparseresponsedeflinkloader
1条回答
网友
1楼 · 发布于 2024-04-26 02:28:13

您好(:您可以继续上一个问题

有两种方法:

  • 第一种方法是使用带有预计算值的loader.add_value()方法。例如:
link = response.urljoin(casa.css('a.go-to-posting::attr(href)').get())
loader.add_value('link', link)

这很简单

  • 第二种方法是使用MapCompose,它会将参数中的函数应用于使用CSS选择器找到的每个提取项:
from scrapy.processors import MapCompose

loader.add_css('link', 'a.go-to-posting::attr(href)', MapCompose(response.urljoin))

相关问题 更多 >