【问题标题】:How can I identify a js array by its keys?如何通过键识别 js 数组?
【发布时间】:2015-07-29 08:14:43
【问题描述】:

我的蜘蛛将 javascript 代码作为字符串返回。从这段代码中,我需要检索一个可以通过其键识别的数组。

也就是说,我已经有了密钥,但是如何获得完整的数组呢?另外,我不知道数组的名称。

正则表达式合适吗?或者有没有好的方法来实现这一目标? 谢谢!

编辑:

Java 代码的一部分看起来像这样(抱歉,将所有内容复制到这里太多且不必要):

 {var P=parseInt($(".secondary-results-count").html());if(P-1<1){$(".secondary-results-show").hide()}else{$(".secondary-results-count").html(P-1)}}},hasOffers:function(M){if(M.result.offer&&M.result.offer.offers){return(M.result.offer.offers.length>0)?true:false}return false},queryCompanyInfo:function(O,M,N){new QueryCompanyInfo({companyInfoId:O,bookingId:M},function(Q){if(Q.status=="Ok"){var P=arrayStore.inst("offersId");var R=P.get(M);R.company=Q.result.companyInfo;P.put(M,R);if(N){N(Q,P.get(M))}}}).query()},createOfferHtml:function(O){arrayStore.inst("offersId").put(O.bookingId,{price:O,company:null});var aq={"-2":"Best Value","-3":"Executive","-4":"Minibus","-1":"Other","0":"NotSet","1":"Compact","2":"Sedan","3":"PeopleCarrier","4":"SUV","5":"VanOrMinibus","6":"Coach","7":"StretchLimo","8":"StationWagon","9":"Convertible","102":"SportsCar","104":"Offroad","105":"PickupTruck","106":"Motorcycle","107":"Rickshaw","108":"WaterTaxi"};var Z=12; ...

而且我知道键“-1”、“-2”、“-3”。

【问题讨论】:

  • 请通过添加字符串来改进您的问题,并告诉您对字符串的哪些部分感兴趣以及您已经尝试过什么。您的问题太宽泛了,可以这样回答:“是的,正则表达式很好”。
  • 看看这个so question/answer
  • 问题是这只是代码中的一个sn-p,它是一个字符串。也许你可以帮助正则表达式?因为我不知道该怎么做
  • 然后创建一个新问题,其中包含您的字符串、您的正则表达式、您得到什么以及您期望什么的最小示例。请不要指望我做这项工作,因为你不想做。
  • 很抱歉你采取了这种方式,但我征求的是意见,而不是你做我的工作。我有这个正则表达式,它现在可以工作(\{[^\{\}\(\)]*\"-1\".*\})。我只是认为可能有一个更优雅的解决方案......

标签: regex python-2.7 web-scraping scrapy


【解决方案1】:

首先我建议你它与scrapy问题无关,

另一方面,您可以使用正则表达式获取这些数据

我尝试了var\s+aq=(.*?); 正则表达式,它非常适合您的问题

【讨论】:

  • 谢谢,唯一的问题是数组的调用方式可能不同
【解决方案2】:

您可以为此使用js2xml,并使用这样的 XPath 识别对象:

>>> import js2xml 
>>> jstree = js2xml.parse(jsstring) 
>>> objs = jstree.xpath('//object[property[@name = "-1"]]')
>>> # or this alternative
>>> # objs = jstree.xpath('//object[property/@name="-1"]')
>>> print js2xml.jsonlike.make_dict(objs[0])
... {'-1': 'Other',
...  '-2': 'Best Value',
...  '-3': 'Executive',
...  '-4': 'Minibus',
...  '0': 'NotSet',
...  '1': 'Compact',
...  '102': 'SportsCar',
...  '104': 'Offroad',
...  '105': 'PickupTruck',
...  '106': 'Motorcycle',
...  '107': 'Rickshaw',
...  '108': 'WaterTaxi',
...  '2': 'Sedan',
...  '3': 'PeopleCarrier',
...  '4': 'SUV',
...  '5': 'VanOrMinibus',
...  '6': 'Coach',
...  '7': 'StretchLimo',
...  '8': 'StationWagon',
...  '9': 'Convertible'}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 2018-08-11
    • 2015-07-28
    相关资源
    最近更新 更多