<script type="text/javascript">
define('roomsAndRatesData', function() {
var roomsAndRatePlans = {"propertyData":{"bookingFeeMessageEnabled":true}},{"rooms":{"24-285501":{"locale":"en"}}}
};
</script>
在该脚本中还定义了其他变量。我只需要“ var roomsAndRatePlans”变量中的数据,任何人都可以建议解决方案以仅获取该变量数据。
我尝试了其他解决方案,但始终会检索该脚本标签内的所有数据并转换该数据会引发错误。
因此,请提供给我解决方案以仅获取该脚本的特定数据
谢谢
最佳答案
您可以使用js2xml库:
>>> import js2xml
>>> from js2xml.utils.vars import get_vars
>>> snippet = '''
var product = {"price": 10.93, "stock": false, "name": "JBL"};
var analytics = {"id": 1234};
'''
>>> get_vars(js2xml.parse(snippet))
{
'product': {'price': 10.93, 'stock': False, 'name': 'JBL'},
'analytics': {'id': 1234}
}
您的JS代码段似乎不完整,因此我在这里使用了一个虚拟代码段。
对于您的情况,您可能首先必须通过以下方式获取JS代码:
>>> snippet = response.css('script:contains("roomsAndRatesData")::text').get()