【问题标题】:How to use json to extract contents from a text/javascript如何使用 json 从文本/javascript 中提取内容
【发布时间】:2020-01-16 18:27:08
【问题描述】:

大家好,我正在尝试使用 json python 库从文本/javascript 中提取内容,但未成功。

这是我的代码:

js = soup.find_all('script', {'type': 'text/javascript'})[15]
js = json.loads(str(js).split('var item_stock = ')[1]).split('colors: ')[1].split('sizes: ')[1]
for size in js:
    sizee = str(size).split("size_name")[1].split(":")[1]
    print(sizee)

这是文本/javascript:

var item_stock = {"colors": [{"color_code": "1","color_name": "BLACK","color_swatch": "/apis/image/crop?file_name=%2Fphoto%2F2019aw%2F19-04969%2Fs-19-04969_1-1.jpg&width=26&height=26","color_proper": "3,600","color_proper_usd": "33.48","color_proper_eur": "30.24","color_sale": "","color_sale_usd": "","color_sale_eur": "","color_percent": "","html_color": "","image_url": "","stock":  "0","sizes": [{"goods_id": "821","size_code": "OS","size_name": "23-25cm","stock": 0,"size_proper": "3,600","size_proper_usd": "33.48","size_proper_eur": "30.24","size_sale": "","size_sale_usd": "","size_sale_eur": "","size_percent": "","in_sales_flag": "1","stock_request_flag": "","restock_request_flag": 0,"coming_soon_flag": "0",},],"images": "<img src=/photo/2019aw/19-04969/s-19-04969_1-1.jpg>",},{"color_code": "101","color_name": "WHITE","color_swatch": "/apis/image/crop?file_name=%2Fphoto%2F2019aw%2F19-04969%2Fs-19-04969_101-1.jpg&width=26&height=26","color_proper": "3,600","color_proper_usd": "33.48","color_proper_eur": "30.24","color_sale": "","color_sale_usd": "","color_sale_eur": "","color_percent": "","html_color": "","image_url": "","stock":  "3","sizes": [{"goods_id": "822","size_code": "OS","size_name": "23-25cm","stock": 3,"size_proper": "3,600","size_proper_usd": "33.48","size_proper_eur": "30.24","size_sale": "","size_sale_usd": "","size_sale_eur": "","size_percent": "","in_sales_flag": "1","stock_request_flag": "","restock_request_flag": 0,"coming_soon_flag": "0",},],"images": "<img src=/photo/2019aw/19-04969/s-19-04969_101-1.jpg>",},]};

我正在尝试打印“size_name”:“23-25cm”和“color_name”:“BLACK”

谢谢大家!

【问题讨论】:

  • @Itay Zagron 语法错误?

标签: python json beautifulsoup python-requests


【解决方案1】:

@Italy Zagron 我还没解决!

【讨论】:

    【解决方案2】:

    一旦你“json.loads”,你就不能使用 split 或任何其他字符串方法。

    试试这个:

    js = soup.find_all('script', {'type': 'text/javascript'})[15]
    js_dict = json.loads(str(js).split('var item_stock = ')[1])
    colors = js_dict.get("colors")
    
    for color in colors:
        color_name = color.get("color_name")
        sizes = color.get("sizes")
        for size in sizes:
            print(f"color: {color}, size: {size.get("size_name")}")
    

    【讨论】:

    • @notme17 您的 json 无效,因此您无法“加载”。你必须先修复它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多