Я создал файл JSON после очистки данных в сети со следующим упрощенным кодом:
for item in range(items_to_scrape)
az_text = []
for n in range(first_web_page, last_web_page):
reviews_html = requests.get(page_link)
tree = fromstring(reviews_html.text)
page_link = base_url + str(n)
review_text_tags = tree.xpath(xpath_1)
for r_text in review_text_tags:
review_text = r_text.text
az_text.append(review_text)
az_reviews = {}
az_reviews[item] = az_text
with open('data.json', 'w') as outfile:
json.dump(az_reviews , outfile)
Возможно, существует лучший способ создать файл JSON с первым ключом, равным номеру элемента ивторой ключ, равный списку отзывов для этого элемента, однако в настоящее время я застрял при открытии файла JSON, чтобы увидеть, что элементы уже были очищены.
Структура файла JSON выглядит следующим образом:
{
"asin": "0439785960",
"reviews": [
"Don’t miss this one!",
"Came in great condition, one of my favorites in the HP series!",
"Don’t know how these books are so good and I’ve never read them until now. Whether you’ve watched the movies or not, read these books"
]
}
Неудачная попытка, которая, похоже, ближе к решению, следующая:
import json
from pprint import pprint
json_data = open('data.json', 'r').read()
json1_file = json.loads(json_data)
print(type(json1_file))
print(json1_file["asin"])
Возвращает строку, которая точно копирует результат функции print (), которую я использовал во время очисткипроцесс, чтобы проверить, как должен выглядеть файл JSON, но я не могу получить доступ к asins или обзорам, используя json1_file["asin"]
или json1_file["reviews"]
, так как прочитанный файл является строкой, а не словарем.
TypeError: string indices must be integers
Используя функцию json.load()
, я все еще печатаю правильное содержимое, но не могу понять, как получить доступ к словарному объекту из JSOФайл N для перебора ключей и значений.
Следующий код печатает содержимое файла, но выдает ошибку (AttributeError: '_io.TextIOWrapper' object has no attribute 'items'
), когда я пытаюсь перебрать ключи и значения:
with open('data.json', 'r') as content:
print(json.load(content))
for key, value in content.items():
print(key, value)
Что не так с приведенным выше кодом и что нужно настроить, чтобы загрузить файл в словарь?