简体   繁体   English

如何从Scrapy响应中的脚本标记中提取Javascript变量?

[英]How to extract Javascript variables from a script tag in a Scrapy response?

<script type="text/javascript">

define('roomsAndRatesData', function() {
var roomsAndRatePlans = {"propertyData":{"bookingFeeMessageEnabled":true}},{"rooms":{"24-285501":{"locale":"en"}}}

};
</script>

There where other variable also define in that script. 在该脚本中还定义了其他变量。 i just need data that are inside "var roomsAndRatePlans" variable can any one suggest solution to get only that variable data. 我只需要“ var roomsAndRatePlans”变量中的数据,任何人都可以建议解决方案以仅获取该变量数据。

i have try other solutions but always retrieve all data inside that script tag and converting that data throws error. 我尝试了其他解决方案,但始终会检索该脚本标签内的所有数据并转换该数据会引发错误。

so please provide me solution to get only particular data of that script 因此,请提供给我解决方案以仅获取该脚本的特定数据

Thanks 谢谢

You can use the js2xml library: 您可以使用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}
}

Your JS snippet seems to be incomplete, so I used a dummy snippet here. 您的JS代码段似乎不完整,因此我在这里使用了一个虚拟代码段。 In your case, you may first have to get the JS code via: 对于您的情况,您可能首先必须通过以下方式获取JS代码:

>>> snippet = response.css('script:contains("roomsAndRatesData")::text').get()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM