如何从Scrapy响应中的脚本标记中提取Javascript变量? 定义('roomsAndRatesData',函数(){ var roomsAndRatePlans={“propertyData”:{“bookingFeeMessageEnabled”:true},{“rooms”:{“24-285501”:{“locale”:“en”}} };

如何从Scrapy响应中的脚本标记中提取Javascript变量? 定义('roomsAndRatesData',函数(){ var roomsAndRatePlans={“propertyData”:{“bookingFeeMessageEnabled”:true},{“rooms”:{“24-285501”:{“locale”:“en”}} };,javascript,python-2.7,xpath,scrapy,Javascript,Python 2.7,Xpath,Scrapy,脚本中还定义了其他变量。我只需要“var roomsAndRatePlans”变量中的数据,任何人都可以建议只获取该变量数据的解决方案 我尝试过其他解决方案,但总是检索该脚本标记内的所有数据,并且转换该数据会引发错误 所以,请为我提供解决方案,以便仅获取该脚本的特定数据 谢谢您可以使用该库: 您的JS代码段似乎不完整,所以我在这里使用了一个虚拟代码段。 在您的情况下,您可能首先必须通过以下方式获取JS代码: >>> import js2xml >>> from

脚本中还定义了其他变量。我只需要“var roomsAndRatePlans”变量中的数据,任何人都可以建议只获取该变量数据的解决方案

我尝试过其他解决方案,但总是检索该脚本标记内的所有数据,并且转换该数据会引发错误

所以,请为我提供解决方案,以便仅获取该脚本的特定数据

谢谢

您可以使用该库:

您的JS代码段似乎不完整,所以我在这里使用了一个虚拟代码段。 在您的情况下,您可能首先必须通过以下方式获取JS代码:

>>> 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代码:

>>> 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}
}

你不能用XPath检索它,你必须用正则表达式来提取它。你能帮我创建那个正则表达式吗,因为我不太知道如何使用Regex@thirddeveloper对我来说这看起来像是一个嵌套的字典。所以试着在=之后分开这些东西,然后像字典一样访问你可以试着使用js2xml:你不能用XPath检索它,是吗必须通过正则表达式来提取它。你能帮我创建那个正则表达式吗,因为我不太知道如何使用Regex@thirddeveloper对我来说这看起来像一个嵌套的字典。所以尝试在=之后分离内容,然后像字典一样访问你可以尝试使用js2xml:
>>> snippet = response.css('script:contains("roomsAndRatesData")::text').get()