我现在正为一些Python和JSON的东西而挣扎。
我有一个具有一些值的JSON文件:
{
"labels":{
"buybox":{
"container": "'id' : 'product-top'"
},
"instock":{
"container": "'div', class_= 'row border-bottom'",
"text": [
"auf lager",
"ware neu eingetroffen"
]
}
}
}在解析这个Json之后,我希望在一个->命令中使用标签->买方盒容器值,如下所示:
buybox = soup.find(buybox_container)
但是,当我尝试将JSON值写入变量时,变量是一个字符串,我认为这是行不通的,因为“买方箱”变量是空的。
soup.find无法从值"buybox_container“中解释字符串。
有办法让这件事奏效吗?
发布于 2021-04-02 16:56:47
您的JSON文件似乎正在编码函数参数,您希望以编程方式使用JSON文件以某些方式调用该函数。
这主要是Python的问题,但是如果您像这样编码:
{
"labels": {
"buybox": {
"container": {
"kwargs": {
"id" : "product-top"
}
}
},
"instock": {
"container": {
"args": [
"div"
],
"kwargs": {
"class_": "row border-bottom"
}
],
"text": [
"auf lager",
"ware neu eingetroffen"
]
}
}
}然后像这样引用:
buybox_container_params = json.loads(your_data)["labels"]["buybox"]["container"]
buybox = soup.find(*buybox_container_params.get("args", []), **buybox_container_params.get("kwargs", {}))它将正确地将看起来像list的JSON解释为args列表,而JSON看起来像dict作为关键字值。这依赖于一些被称为“解包装”的Python特性:
https://docs.python.org/3/reference/expressions.html#expression-lists
https://docs.python.org/3/reference/expressions.html#dictionary-displays
发布于 2021-04-02 16:46:58
只需使用json库来访问容器值。bs4用于解析html。
import json
s = '''{
"labels":{
"buybox":{
"container": "'id' : 'product-top'"
},
"instock":{
"container": "'div', class_= 'row border-bottom'",
"text": [
"auf lager",
"ware neu eingetroffen"
]
}
}
}'''
data = json.loads(s)
print(data['labels']['buybox']['container'])发布于 2021-04-02 16:49:17
如果您试图访问labels.buybox.container的值,一个更简单的方法可能是:
import json
j = open('test.json', 'r').read()
buybox_container = json.loads(j)['labels']['buybox']['container']
print(buybox_container)https://stackoverflow.com/questions/66922446
复制相似问题