Как правильно сохранить данные с помощью Scrapy?

Добрый день!

Нужно получить данные о проекте со страницы.

Данные, все на одной странице:
название проекта
описание проекта
команда

команда - тут как правило много участников и тут нужно получить: Имя, статус в проекте, ссылки на профиль

Сейчас делаю так
class ProjectItem(scrapy.Item):
    id = scrapy.Field()
    name = scrapy.Field()       
    team = scrapy.Field()


В team уже передаю json в виде строки
for people in all_team:
    ...
    team.append({
                "id": id,
                "full_name": full_name,
                "current_position": current_position,
                "website": website,
            })

l.add_value('team', json.dumps(team))


Дальше это потом планирую сохранять в nosql базе, через pipelines
Планирую делать две таблицы: project и team

По ощущениям, решение с хранением в виде строки, мне кажется так себе.
Подскажите, подходящий это способ или нужно использовать сразу два Item для проекта и отдельно команды, как их в таком случае связать?

Можно ли сохранить в поле team список без конвертации его в строку?
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Verz1Lka
Web scraping expert
1) В scrapy начиная вроде-бы с мажорной первой версии уже необязательно определять scrapy.Item, можно использовать обычный dict.
2) Да, вы можете хранить использовать поле любого формата в Item, это вполне может быть list of dict.
3) Вы можете создать два типа Item, но тогда вам pipelines придётся проверять его тип, на мой взгляд проще использовать item одного типа и уже его разбирать в pipelines как угодно, написав запросы для вставки в 2 таблицы NoSQL.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы