Object of type Tag is not JSON serializable

Рейтинг: 0Ответов: 1Опубликовано: 28.07.2023

Имеется код, который берет адреса. При выполнении выдает ошибку

Object of type Tag is not JSON serializable

from bs4 import BeautifulSoup
import requests
import json


JSON = 'location.json'
r = requests.get('https://omsk.yapdomik.ru/')
soup = BeautifulSoup(r.text, "html.parser")
locations = soup.find('div', {'class': ['site-footer__address-list']})

with open('location.json', 'w') as file:
    json.dump(locations, file)

Ответы

▲ 0Принят

Нужно, что-бы locations был типа dict. Вы же забираете часть разметки HTML, из которой нужно достать данные, прежде чем записывать в json. Если вы хотите достать локации, то сделать это можно таким образом:

from bs4 import BeautifulSoup
import requests
import json


JSON = 'location.json'
r = requests.get('https://omsk.yapdomik.ru/')
soup = BeautifulSoup(r.text, "html.parser")
locations = soup.find('div', {'class': ['site-footer__address-list']}).find_all("li")

locations_dict = {"locations": []}
for loc in locations:
    locations_dict["locations"].append(loc.text)

with open('location.json', 'w', encoding="utf-8-sig") as file:
    json.dump(locations_dict, file, indent=4)