Javascript 在Python中解析BeautySoup之后的脚本标记

Javascript 在Python中解析BeautySoup之后的脚本标记,javascript,python,parsing,Javascript,Python,Parsing,大家好,论坛的所有成员。 解析页面时,我遇到了从标记脚本提取数据的问题。标记的内部内容不是json对象。使用web.driver结果不正确。 谁面对这样的事情?我请求你的帮助 代码示例: window.ShopifyAnalytics=window.ShopifyAnalytics | |{}; window.ShopifyAnalytics.meta=window.ShopifyAnalytics.meta | |{}; window.shoppifyanalytics.meta.curre

大家好,论坛的所有成员。 解析页面时,我遇到了从标记脚本提取数据的问题。标记的内部内容不是json对象。使用web.driver结果不正确。 谁面对这样的事情?我请求你的帮助

代码示例:

window.ShopifyAnalytics=window.ShopifyAnalytics | |{};
window.ShopifyAnalytics.meta=window.ShopifyAnalytics.meta | |{};
window.shoppifyanalytics.meta.currency='AUD';
var meta={“产品”:{“id”:8993669708,“供应商”:“女性化者”,“类型”:“可控震源”,“变体”:[{“id”:31066737740,“价格”:14999,“名称”:“女性化者-黑色”,“公共名称”:“黑色”,“sku”:“172145678”},{“id”:31066737804,“价格”:14999,“名称”:“女性化者-紫色”,“公共名称”:“紫色”,“sku”:“172146924”},{“id”:310667368,“价格”:14999,“名称”:“女性化者-粉色”、“公共标题”:“粉色”、“sku”:“172150324”},{“id”:31066737996,“价格”:14999,“名称”:“女性化者-纹身”、“公共标题”:“纹身”、“sku”:“纹身”、“sku”:“172205168”},{“id”:150990821781,“价格”:14999,“名称”:“女性化者-蓝色”、“公共标题”:“蓝色”、“sku”:“1725205076”},{“页面”:“页面类型”:“产品”、“资源类型”:“产品”、“资源id”:8993669708};
for(元中的var attr){
window.ShopifyAnalytics.meta[attr]=meta[attr];
}
使用正则表达式

演示:

from bs4 import BeautifulSoup
import json
import re


s = """<script>window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'AUD';
var meta = {"product":{"id":8993669708,"vendor":"Womanizer","type":"Vibrators","variants":[{"id":31066737740,"price":14999,"name":"Womanizer - Black","public_title":"Black","sku":"172145678"},{"id":31066737804,"price":14999,"name":"Womanizer - Purple","public_title":"Purple","sku":"172146924"},{"id":31066737868,"price":14999,"name":"Womanizer - Pink","public_title":"Pink","sku":"172150324"},{"id":31066737996,"price":14999,"name":"Womanizer - Tattoo","public_title":"Tattoo","sku":"172205168"},{"id":1509908217881,"price":14999,"name":"Womanizer - Blue","public_title":"Blue","sku":"1725205076"}]},"page":{"pageType":"product","resourceType":"product","resourceId":8993669708}};
for (var attr in meta) {
  window.ShopifyAnalytics.meta[attr] = meta[attr];
}</script>"""

soup = BeautifulSoup(s, "html.parser")
scr = soup.find("script")
m = re.search(r"var meta = (.*?);", scr.string)
if m:
    data = json.loads(m.group(1))
    for sku in data["product"]["variants"]:
        print(sku["sku"])
172145678
172146924
172150324
172205168
1725205076

您的预期输出是什么?我想输出“sku”。