<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()

09-26 15:46