gpt4 book ai didi

python - Scrapy安全提取元素的方法

转载 作者:行者123 更新时间:2023-12-01 05:36:10 25 4
gpt4 key购买 nike

从页面中提取项目信息的最佳安全方法是什么?我的意思是,有时页面中可能会缺少某个项目,而您最终会破坏爬虫。

看看这个例子:

    for cotacao in tabela_cotacoes:
citem = CotacaoItem()
citem['name'] = cotacao.select("td[4]/text()").extract()[0]
citem['symbol'] = cotacao.select("td/a/b/text()").extract()[0]
citem['current'] = cotacao.select("td[6]/text()").extract()[0]
citem['last_neg'] = cotacao.select("td[7]/text()").extract()[0]
citem['oscillation'] = cotacao.select("td[8]/text()").extract()[0]
citem['openning'] = cotacao.select("td[9]/text()").extract()[0]
citem['close'] = cotacao.select("td[10]/text()").extract()[0]
citem['maximum'] = cotacao.select("td[11]/text()").extract()[0]
citem['minimun'] = cotacao.select("td[12]/text()").extract()[0]
citem['volume'] = cotacao.select("td[13]/text()").extract()[0]

如果页面中缺少某些项目,.extract() 将返回 [],并对它们调用 [0] 将引发异常(超出范围)。

所以问题是,处理这个问题的最佳方式/方法是什么。

最佳答案

编写一个小辅助函数:

def extractor(xpathselector, selector):
"""
Helper function that extract info from xpathselector object
using the selector constrains.
"""
val = xpathselector.select(selector).extract()
return val[0] if val else None

并像这样使用它:

citem['name'] = extractor(cotacao, "td[4]/text()")

返回适当的值以指示未找到citem。在我的代码中,我返回了 None,如有必要,请更改它(例如,如果有意义,则返回 '')。

关于python - Scrapy安全提取元素的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19009629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com