不符合Python变量限制的零碎字段名

2024-06-01 10:05:06 发布

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

字段名是否可能不符合python变量命名规则?更详细地说,在导出文件中是否可以将字段名作为“职务”而不是“职务”。虽然在JSON或XML导出中可能没有用处,但在以CSV格式导出时,这样的功能可能有用。例如,如果我需要使用此数据导入到另一个系统,该系统已配置为接受具有特定字段名的CSV

试图阅读Item Pipelines文档,但似乎是针对“一个项目被爬行器刮走了”,而不是针对字段名称本身(尽管可能完全错误)

这方面的任何帮助都会非常有用


Tags: 文件csv数据功能json规则系统格式
1条回答
网友
1楼 · 发布于 2024-06-01 10:05:06

我建议您使用名为scrapy-jsonschema的第三方库。有了它,您可以像这样定义项目:

from scrapy_jsonschema.item import JsonSchemaItem

class MyItem(JsonSchemaItem):
    jsonschema = {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "title": "MyItem",
        "description": "My Item with spaces",
        "type": "object",
        "properties": {
            "id": {
                "description": "The unique identifier for the employee",
                "type": "integer"
            },
            "name": {
                "description": "Name of the employee",
                "type": "string"
            },
            "job title": {
                "description": "The title of employee's job.",
                "type": "string",

            }
        },
        "required": ["id", "name", "job title"]
    }

然后像这样填充它:

item = MyItem()
item['job title'] = 'Boss'

您可以阅读有关here的更多信息

此解决方案按照您的要求解决项目定义问题,但您可以在不定义项目的情况下获得类似的结果。例如,您可以将数据刮取到dict中,然后将其返回给scrapy

yield {
    "id": response.xpath('...').get(),
    "name": response.xpath('...').get(),
    "job title": response.xpath('...').get(),
}

使用scrapy crawl myspider -o file.csv将其刮入csv,列将具有您选择的名称

您还可以让爬行器直接写入csv,或者它的管道,等等。有几种方法可以在没有项目定义的情况下完成

相关问题 更多 >