我正在使用scrapy在每个产品URL中生成一个JSON格式,并创建我的.csv,它工作得很好.

    def parse_variants(self, response):
        text = '.js'
        url = response.xpath('//link[2]/@href').get()
        full_url = url + text
        parsing = requests.get(full_url).json()
        for x in range(0,len(parsing['variants'])):
            yield {
                'added_on_store': parsing['created_at'],
                'type': parsing['type'],
                'product_name': parsing['title'],
                'variant_name': parsing['variants'][x]['title'],
                'current_price': (parsing['variants'][x]['price']) // 100,
                'original_price': parsing['variants'][x]['compare_at_price'],
                'bar_code/GTIN': parsing['variants'][x]['barcode']
            }

默认情况下,价格是4位数,我需要go 掉最后2位(这就是我使用‘//100’的原因). 它适用于‘Current_Price’,但不一定适用于‘Origin_Price’,因为该值可以为空.

如果‘Origin_Price’为空,它将返回一个有意义的错误,因为它不能以100为底.

这就是为什么我希望有一个错误处理程序或一个默认参数,如果它是空的,但如果有东西,仍然使用‘//100’.

有什么建议吗?

谢谢.

推荐答案

最简单的方法是使用条件语句来设置值.

例如:

def parse_variants(self, response):
    text = '.js'
    url = response.xpath('//link[2]/@href').get()
    full_url = url + text
    parsing = requests.get(full_url).json()
    for x in range(0,len(parsing['variants'])):
        original_price = parsing['variants'][x]['compare_at_price']
        original_price = original_price // 100 if original_price else 0
        yield {
            'added_on_store': parsing['created_at'],
            'type': parsing['type'],
            'product_name': parsing['title'],
            'variant_name': parsing['variants'][x]['title'],
            'current_price': (parsing['variants'][x]['price']) // 100,
            'original_price': original_price,
            'bar_code/GTIN': parsing['variants'][x]['barcode']
        }

Python相关问答推荐

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

加速Python循环

如何获取numpy数组的特定索引值?

梯度下降:简化要素集的运行时间比原始要素集长

使用NeuralProphet绘制置信区间时出错

名为__main__. py的Python模块在导入时不运行'

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

Pandas Data Wrangling/Dataframe Assignment

如何使regex代码只适用于空的目标单元格

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

在用于Python的Bokeh包中设置按钮的样式

ModuleNotFoundError:Python中没有名为google的模块''

替换包含Python DataFrame中的值的<;

两个名称相同但值不同的 Select 都会产生相同的值(discord.py)

将数据从一个单元格保存到Jupyter笔记本中的下一个单元格

Pandas:使列中的列表大小与另一列中的列表大小相同

PYODBC错误(SQL包含-26272个参数标记,但提供了235872个参数,HY 000)

如何计算Pandas 中具有特定条件的行之间的天差

使用pytest测试是否缺少导入

torch 二维张量与三维张量欧氏距离的计算