如何告訴Scrapy將所有已獲得的項目分爲兩個列表?例如,假設我有兩種主要類型的項目 - article
和author
。我想把它們放在兩個單獨的列表中。現在我得到輸出JSON:Scrapy將項目作爲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
}
管道訪問我仍然不確定如何將給定類型的所有項目分組在一個JSON密鑰下。修改管道返回'{'author':item}'仍然爲每個項目創建一個'author'鍵。我想我需要在我自己的列表中的某個地方累積所有項目,然後在最後輸出它們作爲JSON,但我不知道該怎麼做。 :::如果我想主要遍歷文章,您建議的架構很好。例如,列出所有作者就會變得更加困難。 –
@MartinMelka我編輯了我的答案 –