[英]Python Nested jSon Objects
我正在尝试将我的对象嵌套到另一个称为“图形卡”的对象中,但是我很难弄清楚它。 我已经尝试了几件事,但是没有得到想要的输出。
[
{
"Graphics Card":
{
"Brands": "Brand Name",
"Products": "Product Name",
"Shipping": "Brand Name"
}
}
]
下面是我的代码。 任何帮助表示赞赏。 谢谢!
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import json
my_url = 'https://www.newegg.com/Video-Cards-Video-Devices/Category/ID-38?Tpk=graphics%20cards'
# opening up connection, grabbing the page
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
# html parsing
page_soup = soup(page_html, "html.parser")
# grabs each product
containers = page_soup.findAll("div", {"class":"item-container"})
items = []
for container in containers:
brand = container.div.div.a.img["title"]
title_container = container.findAll("a",{"class":"item-title"})
product_name = title_container[0].text
shipping_container = container.findAll("li", {"class":"price-ship"})
shipping = shipping_container[0].text.strip()
items.append({"Brands": brand, "Products": product_name, "Shipping": shipping })
print(json.dumps(items, sort_keys=True, indent=4))
fout = open("text.json", 'w')
json.dump(items, fout, sort_keys=True, indent=4)
fout.close()
您问题中的JSON确实没有任何意义。
一个人会期望
{ "graphics cards": [ {object1}, {object2},... ] }
也许是这样,但是您丢失了数据中的关联值...所以可能不会
{ "graphics cards": { "brands": [ ... ], "products": [...], "shipping": [...] }
话虽如此,您想这样做。
final_items = { "Graphics Cards": items }
print(json.dumps(final_items, sort_keys=True, indent=4))
而且您的代码工作正常。
{
"Graphics Cards": [
{
"Brands": "GIGABYTE",
"Products": "GIGABYTE GeForce GTX 1060 Windforce OC GV-N1060WF2OC-6GD Video Card",
"Shipping": "Free Shipping"
},
{
"Brands": "XFX",
"Products": "XFX Radeon GTR RX 480 DirectX 12 RX-480P8DBA6 Black Edition Video Card",
"Shipping": "$4.99 Shipping"
},
建议,尽管对于“更好的” JSON数据:将每个“品牌”分组在一起。
{
"cards": [
"GIGABYTE": [
{
"Products": "GIGABYTE GeForce GTX 1060 Windforce OC GV-N1060WF2OC-6GD Video Card",
"Shipping": "Free Shipping"
},
{
"Products": "GIGABYTE GeForce GTX 1050 Ti DirectX 12 GV-N105TWF2OC-4GD Video Card",
"Shipping": "Free Shipping"
}
],
"XFX": [ ... ]
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.