python - 任何帮助,在从 HTML 解析 JSON 时卡住我的代码。需要告诉我库存何时为真
问题描述
我在 HTML 中有这个 JSON 输出,我想检查库存。我已经构建了所有东西,但是当 Python 需要告诉我库存是否真实时,我陷入了困境。
所有数字都是荷兰各地的商店。如果其中只有一个是 TRUE,我只想编写 Python 打印“In Stock”的代码。我做了'' if ... or ... == 'True',但是如果其中一家商店是假的,它告诉我它仍然缺货。
知道我需要使用什么样的代码让 Python 告诉我其中一家商店是否有库存吗?
我正在使用 BS4,Beautifulsoup 来解析 JSON。
只是停留在 ''If... == 'True' 部分。
谢谢!
{"1665134":{"642":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1298":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1299":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1322":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1325":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1966":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1208":{"hasStock":false,"hasShowModel":false,"lowStock":false},"193":{"hasStock":false,"hasShowModel":false,"lowStock":false},"194":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1102":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1360":{"hasStock":false,"hasShowModel":false,"lowStock":false},"852":{"hasStock":false,"hasShowModel":false,"lowStock":false},"853":{"hasStock":false,"hasShowModel":false,"lowStock":false},"854":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1239":{"hasStock":false,"hasShowModel":false,"lowStock":false},"855":{"hasStock":false,"hasShowModel":false,"lowStock":false},"856":{"hasStock":false,"hasShowModel":false,"lowStock":false},"857":{"hasStock":false,"hasShowModel":false,"lowStock":false},"858":{"hasStock":false,"hasShowModel":false,"lowStock":false},"859":{"hasStock":false,"hasShowModel":false,"lowStock":false},"860":{"hasStock":false,"hasShowModel":false,"lowStock":false},"861":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1246":{"hasStock":false,"hasShowModel":false,"lowStock":false},"862":{"hasStock":false,"hasShowModel":false,"lowStock":false},"863":{"hasStock":false,"hasShowModel":false,"lowStock":false},"864":{"hasStock":false,"hasShowModel":false,"lowStock":false},"865":{"hasStock":false,"hasShowModel":false,"lowStock":false},"866":{"hasStock":false,"hasShowModel":false,"lowStock":false},"867":{"hasStock":false,"hasShowModel":false,"lowStock":false},"484":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1380":{"hasStock":false,"hasShowModel":false,"lowStock":false},"868":{"hasStock":false,"hasShowModel":false,"lowStock":false},"869":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1381":{"hasStock":false,"hasShowModel":false,"lowStock":false},"870":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1255":{"hasStock":false,"hasShowModel":false,"lowStock":false},"871":{"hasStock":false,"hasShowModel":false,"lowStock":false},"360":{"hasStock":false,"hasShowModel":false,"lowStock":false},"872":{"hasStock":false,"hasShowModel":false,"lowStock":false},"873":{"hasStock":false,"hasShowModel":false,"lowStock":false},"746":{"hasStock":false,"hasShowModel":false,"lowStock":false},"875":{"hasStock":false,"hasShowModel":false,"lowStock":false},"876":{"hasStock":false,"hasShowModel":false,"lowStock":false},"749":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1391":{"hasStock":false,"hasShowModel":false,"lowStock":false},"880":{"hasStock":false,"hasShowModel":false,"lowStock":false},"499":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1275":{"hasStock":false,"hasShowModel":false,"lowStock":false},"1149":{"hasStock":false,"hasShowModel":false,"lowStock":false},"637":{"hasStock":false,"hasShowModel":false,"lowStock":false}}}
Python代码;
def monitor():
try:
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
voorraad = response.json()
v1 = (voorraad['{}'.format(productid)]['193']['hasStock'])
v2 = (voorraad['{}'.format(productid)]['194']['hasStock'])
v3 = (voorraad['{}'.format(productid)]['360']['hasStock'])
v4 = (voorraad['{}'.format(productid)]['484']['hasStock'])
v5 = (voorraad['{}'.format(productid)]['499']['hasStock'])
v6 = (voorraad['{}'.format(productid)]['637']['hasStock'])
v7 = (voorraad['{}'.format(productid)]['642']['hasStock'])
v8 = (voorraad['{}'.format(productid)]['746']['hasStock'])
v9 = (voorraad['{}'.format(productid)]['749']['hasStock'])
v10 = (voorraad['{}'.format(productid)]['852']['hasStock'])
v11 = (voorraad['{}'.format(productid)]['853']['hasStock'])
v12 = (voorraad['{}'.format(productid)]['854']['hasStock'])
v13 = (voorraad['{}'.format(productid)]['855']['hasStock'])
v14 = (voorraad['{}'.format(productid)]['856']['hasStock'])
v15 = (voorraad['{}'.format(productid)]['857']['hasStock'])
v16 = (voorraad['{}'.format(productid)]['858']['hasStock'])
v17 = (voorraad['{}'.format(productid)]['859']['hasStock'])
v18 = (voorraad['{}'.format(productid)]['860']['hasStock'])
v19 = (voorraad['{}'.format(productid)]['861']['hasStock'])
v20 = (voorraad['{}'.format(productid)]['862']['hasStock'])
v21 = (voorraad['{}'.format(productid)]['863']['hasStock'])
v22 = (voorraad['{}'.format(productid)]['864']['hasStock'])
v23 = (voorraad['{}'.format(productid)]['865']['hasStock'])
v24 = (voorraad['{}'.format(productid)]['866']['hasStock'])
v25 = (voorraad['{}'.format(productid)]['867']['hasStock'])
v26 = (voorraad['{}'.format(productid)]['868']['hasStock'])
v27 = (voorraad['{}'.format(productid)]['869']['hasStock'])
v28 = (voorraad['{}'.format(productid)]['870']['hasStock'])
v29 = (voorraad['{}'.format(productid)]['871']['hasStock'])
v30 = (voorraad['{}'.format(productid)]['872']['hasStock'])
v31 = (voorraad['{}'.format(productid)]['873']['hasStock'])
v32 = (voorraad['{}'.format(productid)]['875']['hasStock'])
v33 = (voorraad['{}'.format(productid)]['876']['hasStock'])
v34 = (voorraad['{}'.format(productid)]['880']['hasStock'])
v35 = (voorraad['{}'.format(productid)]['1102']['hasStock'])
v36 = (voorraad['{}'.format(productid)]['1149']['hasStock'])
v37 = (voorraad['{}'.format(productid)]['1208']['hasStock'])
v38 = (voorraad['{}'.format(productid)]['1239']['hasStock'])
v39 = (voorraad['{}'.format(productid)]['1246']['hasStock'])
v40 = (voorraad['{}'.format(productid)]['1255']['hasStock'])
v41 = (voorraad['{}'.format(productid)]['1275']['hasStock'])
v42 = (voorraad['{}'.format(productid)]['1298']['hasStock'])
v43 = (voorraad['{}'.format(productid)]['1299']['hasStock'])
v44 = (voorraad['{}'.format(productid)]['1322']['hasStock'])
v45 = (voorraad['{}'.format(productid)]['1325']['hasStock'])
v46 = (voorraad['{}'.format(productid)]['1360']['hasStock'])
v47 = (voorraad['{}'.format(productid)]['1380']['hasStock'])
v48 = (voorraad['{}'.format(productid)]['1381']['hasStock'])
v49 = (voorraad['{}'.format(productid)]['1391']['hasStock'])
v50 = (voorraad['{}'.format(productid)]['1966']['hasStock'])
if any(v1, v2, v3):
print(colored('[{}] ' + 'IN STOCK | ' + (product_title), 'green').format(str(datetime.now())))
send_to_discord(product_title, webpagina, footerlogo, url, image_url)
time.sleep(50)
exit()
else:
print(colored('[{}] ' + 'OUT OF STOCK | ' + (product_title), 'red').format(str(datetime.now())))
time.sleep(2)
任何是一个测试,不熟悉它......
解决方案
如果你有那么多手动输入,每个都做同样的事情,你的代码就会失控。首先,我建议列出产品代码
products = [193, 194, 360, 384, ...]
来自 js 的 response.json() 不是你在 python 中使用的。首次进口
import json
然后分别使用 json.loads() 或 json.dumps() 来“解析”和“字符串化”
store = json.loads(<soup.whatever>)
然后我假设“1665134”是商品 id 或其他东西,您可以遍历后续对象
for product in store:
if(product['hasStock']):
# do stuff with stock
else:
# has no stock, you're sol
推荐阅读
- react-native - React-Native-Web 配置问题:无法编译“react-native-media-controls”
- python - 可选组内的正则表达式提取组
- ios - clang:错误:链接器命令失败,退出代码为 1(使用 -v 来查看调用)
- reactjs - 使用 useState() 的初始状态更新在 ReactJs 中不起作用
- javascript - ChartJS:百分比标签
- azure-devops - 从 Azure DevOps Release Pipeline 执行脚本后,如何在 Azure Git Repos 中将 Powershell 脚本输出保存为 csv?
- javascript - 如何使用 VueSocialSharing
- go - goavro 和原始 Go 数据结构
- spring-boot - Springboot v2.4.5 中的 Jwt
- routes - 如何检查不存在的laravel 6路线?