【问题标题】:how to get single script variable data from multiple script in html page如何从html页面中的多个脚本中获取单个脚本变量数据
【发布时间】:2019-01-14 07:34:24
【问题描述】:

我有一个 html 页面,其中有几个脚本标记,但我只想要这些脚本中的一个变量数据。 你可以在这里找到html页面代码

https://jsfiddle.net/9Lzc5fxy/

我只想要 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(sn-p)

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

【问题讨论】:

    标签: javascript python-2.7 xpath scrapy


    【解决方案1】:

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

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

    import json
    
    data_str = (selector
        .css('script:contains("roomsAndRatesData")::text')
        .re_first(r'var roomsAndRatePlans = (\{.*\}),'
    )
    data = json.loads(data_str)
    

    data 中的对象将如下所示:

    {
        'propertyData': {
            'bookingFeeMessageEnabled': True,
            'breakfastChargeAvailable': True,
            'breakfastIncludedAtProperty': False
        },
        'rooms': {
            '24-285501': {
                'locale': 'en',
                'providerId': '24',
                'roomTypeCode': '285501'
            }
        }
    }
    

    附:如果您仅将scrapy 用于其Selector 功能,则可以改用parsel,这是scrapy 依赖项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 2021-07-15
      相关资源
      最近更新 更多