@DiZiNnEs
I love to program =)

Как спарсенные данные загрузить в json?

Привет, парщю сайт и необходимо результаты записать в json file.
Вот код:
spoiler
import requests
import json


from bs4 import BeautifulSoup
from textwrap import dedent


from cookie import headers
from urls import users_url


def parser_sova(headers, users_url):
    for all_page_parser in users_url:
        all_page = all_page_parser
        response = requests.get(all_page, headers=headers)
        response.raise_for_status(),
        soup = BeautifulSoup(response.content, 'html.parser')
        for users in soup.find_all('tr'):
            try:
                name = users.select_one(':nth-child(3) a')
                ip = users.select_one(':nth-child(4) span')
                date_time = users.select_one(':nth-child(4) span').text
                first_ip = ip['title'] if ip is not None else None
                
                for to_json in name, date_time, first_ip: # Вот эти результаты надо записать
                    persons = {
                        "user": {
                            "name:": to_json.string,
                            "IP from the last entry point": first_ip,
                            "Last login date": date_time
                        }
                    }
                    
                    # Дальше идет тестовый код
                    with open('users.json', 'a+') as json_file:
                        for test in to_json:
                            json.dump(test, json_file, indent=2, ensure_ascii=False)
            except:
                print('')
        else:
            print('Next page ------------------------------------------------------------------------- Next page')


if __name__ == '__main__':
    parser_sova(headers, users_url)

Вывод одного юзера такой
{'user': {'name:': 'Желтов Кирилл Валерьевич', 'IP from the last entry point': '89.35.254.125', 'Last login date': '21.03.2020 22:03'}}

И таких очень много, как их всех правильно записать в json формат ?
  • Вопрос задан
  • 260 просмотров
Пригласить эксперта
Ответы на вопрос 1
shabelski89
@shabelski89
engineer
Вы же всё написали, нужно только блоки правильно разместить.
В общем случае:
# создаете словарь
persons  = {}
# пополняете словарь
for num in enumerate(name, date_time, first_ip): 
    persons[num] = {"user": {"name": name, "IP from the last entry point": first_ip, "Last login date": date_time}}
# в конце кода записываете в json, записывать каждый раз в цикле for нет необходимости
with open(r'C:\users.json', 'w', encoding='utf-8') as fh: 
   fh.write(json.dumps(message, ensure_ascii=False))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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