<script type="text/javascript">
define('roomsAndRatesData', function() {
var roomsAndRatePlans = {"propertyData":{"bookingFeeMessageEnabled":true}},{"rooms":{"24-285501":{"locale":"en"}}}
};
</script>
脚本中还定义了其他变量。我只需要"var roomsAndRatePlans“变量中的数据,任何人都可以建议只获取变量数据的解决方案。
我尝试过其他解决方案,但总是检索脚本标记中所有数据,且转换该数据会抛出错误。
所以请给我提供解决方案,只获得特定数据的脚本
谢谢
发布于 2018-08-06 22:14:19
您可以使用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()
https://stackoverflow.com/questions/51705142
复制相似问题