すべての産出アイテムを2つのリストに分割するにはどうすればよいですか?たとえば、私がアイテムの2つの主要なタイプ - article
とauthor
を持っているとしましょう。私はそれらを2つの別々のリストに入れたいと思う。今すぐ出力を取得しています。JSONのサブアイテムとしての治療の収穫アイテム
[
{
"article_title":"foo",
"article_published":"1.1.1972",
"author": "John Doe"
},
{
"name": "John Doe",
"age": 42,
"email": "[email protected]"
}
]
どうすればこのように変換できますか?これらを出力するための
{
"articles": [
{
"article_title": "foo",
"article_published": "1.1.1972",
"author": "John Doe"
}
],
"authors": [
{
"name": "John Doe",
"age": 42,
"email": "[email protected]"
}
]
}
私の機能は、これに似た、単純です:
def parse_author(self, response):
name = response.css('div.author-info a::text').extract_first()
print("Parsing author: {}".format(name))
yield {
'author_name': name
}
私はまだ1つのJSONキー。 '{'author':item}'を返すようにパイプラインを変更すると、すべてのアイテムに対して単一の 'author'キーが作成されます。どこかで自分のリストにすべてのアイテムを蓄積して、最後にJSONとして出力する必要があると思いますが、それをどこにするかはわかりません。 :::記事を繰り返し処理したい場合は、提案したアーキテクチャが良いです。たとえば、すべての著者をリストするのはずっと難しくなります。 –
@MartinMelka私の答えを編集しました –