不符合 Python 变量限制的 Scrapy 字段名称

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

试图阅读 Item Pipelines 文档,但它似乎是针对“一个项目已被蜘蛛抓取”而不是针对字段名称本身(尽管可能是完全错误的)。

在这个方向上的任何帮助都会非常有帮助!


白衣染霜花
浏览 83回答 1
1回答

Qyouu

我建议您使用名为scrapy-jsonschema. 有了它,您可以像这样定义您的项目:from scrapy_jsonschema.item import JsonSchemaItemclass 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'您可以在此处阅读更多信息。该解决方案按照您的要求处理 Item 定义,但您无需定义 Item即可获得类似的结果。例如,您可以将数据抓取到字典中并将其返回给 scrapy。yield {    "id": response.xpath('...').get(),    "name": response.xpath('...').get(),    "job title": response.xpath('...').get(),}这样scrapy crawl myspider -o file.csv就可以抓取到一个 csv 中,并且列将具有您选择的名称。您也可以让蜘蛛直接写入 csv,或者它的管道等。有几种方法可以在没有 Item 定义的情况下完成。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python