目前正在尝试检查此款 PAGE 的小号库存。 (即0)但专门从此数据中检索尺寸较小的库存:
<script>
(function($) {
var variantImages = {},
thumbnails,
variant,
variantImage;
variant = {"id":18116649221,"title":"XS","option1":"XS","option2":null,"option3":null,"sku":"BGT16073100","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Iron Lords T-Shirt - XS","public_title":"XS","options":["XS"],"price":2499,"weight":136,"compare_at_price":null,"inventory_quantity":16,"inventory_management":"shopify","inventory_policy":"deny","barcode":""};
if ( typeof variant.featured_image !== 'undefined' && variant.featured_image !== null ) {
variantImage = variant.featured_image.src.split('?')[0].replace('http:','');
variantImages[variantImage] = variantImages[variantImage] || {};
if (typeof variantImages[variantImage]["option-0"] === 'undefined') {
variantImages[variantImage]["option-0"] = "XS";
}
else {
var oldValue = variantImages[variantImage]["option-0"];
if ( oldValue !== null && oldValue !== "XS" ) {
variantImages[variantImage]["option-0"] = null;
}
}
}
variant = {"id":18116649285,"title":"Small","option1":"Small","option2":null,"option3":null,"sku":"BGT16073110","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Iron Lords T-Shirt - Small","public_title":"Small","options":["Small"],"price":2499,"weight":159,"compare_at_price":null,"inventory_quantity":0,"inventory_management":"shopify","inventory_policy":"deny","barcode":""};
if ( typeof variant.featured_image !== 'undefined' && variant.featured_image !== null ) {
variantImage = variant.featured_image.src.split('?')[0].replace('http:','');
variantImages[variantImage] = variantImages[variantImage] || {};
if (typeof variantImages[variantImage]["option-0"] === 'undefined') {
variantImages[variantImage]["option-0"] = "Small";
}
else {
var oldValue = variantImages[variantImage]["option-0"];
if ( oldValue !== null && oldValue !== "Small" ) {
variantImages[variantImage]["option-0"] = null;
}
}
}
如何告诉 python 找到 <script>
标签,然后是具体的 "inventory_quantity":0
要退回小号产品的库存吗?
最佳答案
您可以使用正则表达式找到它:
s = 'some sample text in which "inventory_quantity":0 appears'
occurences = re.findall('"inventory_quantity":(\d+)', s)
print(occurences[0])
'0'
<小时/>
编辑:
我想你可以得到 <script>...</script>
的全部内容在变量 t
中( lxml
、 xml.etree
、 beautifulsoup
或简单地 re
)。
在开始之前,让我们定义一些变量:
true = True
null = None
然后使用正则表达式查找字典作为文本并转换为 dict
通过eval
r = re.findall('variant = (\{.*}?);', t)
if r:
variant = eval(r)
这就是你得到的:
>>> variant
{'available': True,
'barcode': '',
'compare_at_price': None,
'featured_image': None,
'id': 18116649221,
'inventory_management': 'shopify',
'inventory_policy': 'deny',
'inventory_quantity': 16,
'name': 'Iron Lords T-Shirt - XS',
'option1': 'XS',
'option2': None,
'option3': None,
'options': ['XS'],
'price': 2499,
'public_title': 'XS',
'requires_shipping': True,
'sku': 'BGT16073100',
'taxable': True,
'title': 'XS',
'weight': 136}
现在您可以轻松获取所需的任何信息。
关于python - 在 Python 中抓取字符串的元素 <script>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41417058/