Javascript 如何在html页面中从多个脚本获取单个脚本变量数据

Javascript 如何在html页面中从多个脚本获取单个脚本变量数据,javascript,python-2.7,xpath,scrapy,Javascript,Python 2.7,Xpath,Scrapy,我有一个html页面,其中有几个脚本标记,但我只希望这些脚本中有一个可变数据。 您可以在这里找到html页面代码 我只需要var roomsAndRatePlans变量的数据,因为当我执行下面的代码时,我得到了该脚本标记中的所有数据,任何人都能帮我解决这个问题吗 在这里,我编写了用于检索该数据的代码 f = codecs.open("response.html", 'r') samplenew = f.read() selector = scrapy.Selector(text=sampl

我有一个html页面,其中有几个脚本标记,但我只希望这些脚本中有一个可变数据。 您可以在这里找到html页面代码

我只需要var roomsAndRatePlans变量的数据,因为当我执行下面的代码时,我得到了该脚本标记中的所有数据,任何人都能帮我解决这个问题吗

在这里,我编写了用于检索该数据的代码

f = codecs.open("response.html", 'r')

samplenew = f.read()

selector = scrapy.Selector(text=samplenew, type='html')
snippet = selector.css('script:contains("roomsAndRatesData")::text').get()

jstree = js2xml.parse(snippet)

Data = js2xml.pretty_print(jstree)
但我总是从包含该变量的脚本标记中获取所有数据,因此我总是在中获取转换错误

jstree=js2xml.parse(代码段)


任何人都可以建议任何解决方案,以便我只能检索变量数据“var roomsAndRatePlans”

当我需要从JS代码检索某些变量时,我总是使用正则表达式

您可以使用
re_first
方法实现您想要的:

import json

data_str = (selector
    .css('script:contains("roomsAndRatesData")::text')
    .re_first(r'var roomsAndRatePlans = (\{.*\}),'
)
data = json.loads(data_str)
数据中的对象将如下所示:

{
    'propertyData': {
        'bookingFeeMessageEnabled': True,
        'breakfastChargeAvailable': True,
        'breakfastIncludedAtProperty': False
    },
    'rooms': {
        '24-285501': {
            'locale': 'en',
            'providerId': '24',
            'roomTypeCode': '285501'
        }
    }
}
注意:如果您仅为其
选择器
功能使用
scrapy
,则可以使用
parsel
,这是一种
scrapy
依赖项