Javascript 如何从网页上的脚本标记中获取json元素?

Javascript 如何从网页上的脚本标记中获取json元素?,javascript,python,json,beautifulsoup,Javascript,Python,Json,Beautifulsoup,我正在尝试从页面获取json元素: import json import requests import pandas as pd import re from bs4 import BeautifulSoup as bs url='https://www.nemlig.com/varer/dagligvarer/frugt-og-groent/frugt-baer' url page = requests.get(url)

我正在尝试从页面获取json元素:

   import json
    import requests
    import pandas as pd
    import re
    from bs4 import BeautifulSoup as bs

    url='https://www.nemlig.com/varer/dagligvarer/frugt-og-groent/frugt-baer'
    url

    page = requests.get(url)
    soupH = bs(page.content, 'html.parser')

    scripts=soupH.find_all('script')

    p=re.compile('contentAsJson')

    cn=0
    cont_js=""
    for sc in scripts:
        cn+=1
        #print(cn,sc)
        if p.search(str(sc)):
            cont_js=sc
            #print(cont_js)

    cont_js
但是如何从json脚本中提取(Id、PoductGroupId和combinedProductsandSiteCoreTimstamp)的值呢?

cont_js返回以下内容:

var contentAsJson={“元数据”: {“Id”:“f905e457-c461-4750-880b-bbe6f2d5f5eb”,“名称”:“Frugt baer”,“显示名称”:“模板Id”:“25997ff0-7455-4d0f-bd48-3de2f3a5c3d8”,“模板名称”:“过滤器” 页面,“版本”:1,“语言”:“da”,“内容路径”:“/Site/Varer/Dagligvarer/Frugt-og-groent/Frugt-baer”,“完整路径”:“/sitecore/content/Site/Varer/Frugt-og-groent/Frugt-baer”,“路径”:“/sitecore/content/Site/Varer/Dagligvarer/fruog-groent/Frugt-baer”,“Url”:”https://www.nemlig.com/varer/dagligvarer/frugt-og-groent/frugt-baer“,“标题”:“弗鲁格特 og bær,“AutoHideMobileNavigation”:错误,“PageTitle”:“过移超过” frugt og bær-Dagligvarer når det passer dig!”,“元关键字”:“frugt” og bær,“元描述”:“Udvalg af frugt og bær hos nemlig.com- Modtag dagligvarer når det passer dig,撬动direkte直到døren.Køb frugt og bær居屋 nemlig.com,“CategoryPath”:null,“BackgroundImageForJson”:null,“ResponseCode”:200,“NavigationTitle”:“Oversigt” 在frugt og bær-Dagligvarer når det passer上空 dig!”,“IncludeInNavigation”:true,“IncludeInSitemap”:true,“TopAdvertision”:null,“LeftAdvertision”:null,“MenuContextId”:“f905e457-c461-4750-880b-bbe6f2d5f5eb”,“TrackingId”:“f905e457-c461-4750-880b-bbe6f2d5f5eb”,“需要身份验证”:false}, “设置”: {“BuildVersion”:“b64.2.0.0”,“SitecorePublishedStamp”:“4M-2z7ue”,“ProductsImportedTimestamp”:“4BNhsQiH”,“CombinedProductsAndSiteCoreTimstamp”:“4BNhsQiH-4M-2z7ue”,“UserId”:null,“ZipCode”:“0”,“DeliveryZoneId”:1,“TimeslotUtc”:“2017052108-60-600”,“StaticResourcesPath”:”https://live.nemligstatic.com/s/b64.2.0.0/scom/dist"}, “内容”:[{“Id”:“ca3b1f74-a65e-41ce-9df7-6d6380d4a895”,“VisibleOnMobile”:true,“TemplateName”:“productlistshowallspot”,“TemplateId”:“15135d3e-4a63-478c-ac4d-d3705963ced0”,“标题”:“Bær”,“ProductGroupId”:“e588f992-c387-44b4-95ed-fc7e385796e7”,“TotalProducts”:11},“Id”:“c6d7c49e-7d54-4a6c-257B4E”,“VisibleOnMobile”:“真模板名称”:”productlistshowallspot,“模板ID”:“15135d3e-4a63-478c-ac4d-d3705963ced0”,“标题”:“Udskåret” frugt,“ProductGroupId:”0bba003e-4cd0-4161-ba43-3dd90c0e9095,“TotalProducts:”5},{“Id:”9f7d5644-c3f0-4cd2-8324-8d23530cb95d,“VisibleMobile:”true,“TemplateName:”productlistshowallspot,“TemplateId:”15135d3e-4a63-478c-ac4d-d3705963ced0,“标题:”Eksotisk frugt,ProductGroupId:“14069d07-9bf1-4651-ba04-744da98ea9d6”,TotalProducts:“20},{”Id:“7e0c336f-78b1-41d6-beab-b02b824a22d0”,“VisibleMobile”:true,“TemplateName:“productlistshowallspot”,“TemplateId:“15135d3e-4a63-478c-ac4d-d3705963ced0”,“标题”:“Druer, 奇异果 stenfrugter、ProductGroupId:“6c777f89-fbb2-4d33-b170-6e2586009a16”、“TotalProducts”:12}、{“Id:“62e71c2b-1feb-4771-a7e0-2cbfc70a7326”、“VisibleMobile”:true、“TemplateName:“productlistshowallspot”、“TemplateId:“15135d3e-4a63-478c-ac4d-d3705963ced0”、“标题:“Meloner”、“ProductGroupId:“131a255e-437b-F5-97b6-E214F:”TotalID:“TotalID:”“:“ad2dc012-ad6f-458a-91a2-8770bdcdaa0c”,“VisibleOnMobile”:true,“TemplateName:“productlistshowallspot”,“TemplateId:“15135d3e-4a63-478c-ac4d-d3705963ced0”,“Heading:“Citrusfrugt”,“ProductGroupId:“ea195351-c44a-4158-85f0-4cfbb890978b”,“TotalProducts:”11},{“Id:“3aa05883-2DF23-4e1c-8bb1-67AC3C17”,“VisibleOnMobile:”true:“TemplateName:”“productlistshowallspot”、“TemplateId”:“15135d3e-4a63-478c-ac4d-d3705963ced0”、“标题”:“Pærer”、“ProductGroupId”:“dc604784-c871-4d0e-bc88-2e6ceb8ac044”、“TotalProducts”:4},{“Id”:“0cd2cb71-5ace-479b-ad69-aefb01100bbd”、“VisibleOnMobile”:true,“TemplateName”:“productlistshowallspot”、“TemplateId”:“15135d3e-4a63-478c-AC70D30”、“标题”:“,”ProductGroupId:“97e40d96-bbee-4a32-89e8-d2d05e522b7e”,“TotalProducts”:4},{”Id:“b815f5ef-2d2a-44f6-bedd-0704101b1836”,“VisibleMobile”:true,“TemplateName:“productlistshowallspot”,“TemplateId:“15135d3e-4a63-478c-ac4d-d3705963ced0”,“标题:”:“Abler”,“ProductGroupId:“1832D6-6917-4268-847-AD18F08”,“TotalID:”DCC27A:“,”“174835ea-c986-480c-b2ad-303cf129da12”,“VisibleOnMobile”:true,“TemplateName”:“productlistonerowspot”,“TemplateId”:“17e165e8-b722-4da5-a0c8-8881a4ce4e8c”,“标题”:“Frossen” frugt、SeeMoreLink:{“锚定”:“类”:“文本”:“Se al frossen” frugt,“查询”:“标题”:“Se al frossen” frugt,Url:/varer/dagligvarer/frost/groent frugt frost/frugt og baer,Target:“TargetId:“cd577472-03d9-4ddc-8fc6-632e6d72b30c”,“Type:“internal”},“ProductGroupId:“426f6f21-91e5-4101-9867-0e7a2aa29bd4”,“TotalProducts:”19},{“Id:“0b855f72-b3e8-4bd1-bc23-614C7002”,“CBDateName:“RecipeLiberIdStonerRowSpot”,“TemplateId:”模板f804ee41-029a-4dfe-9247-4fe8c421e637,“标题”:“Årstidens” frugt-og grøntpakker,“SeeMoreLink”:{“Anchor”:“Class”:“Text”:“Aarstidens frugt og groent pakker”,“Query”:“Title”:“Url”:“/varer/dagligvarer/frugt og groent/Aarstidens frugt og groent pakker”,“Target”:“TargetId”:“72c3abce-d57a-45db-9dcb-39ad103a848e”,“Type”:“internal”},“RecipeGroupId”:“A222D644E-a5f1-44ed-8dbd-21B8EF63”,“ContextId”:“baer”TotalRecipes“:6}], “旁白”:[]};
正如我从您给出的示例中了解到的,您有字符串cont_js,其中包含以下内容:

'var contentAsJson = {...encoded string...}'
要仅获取json编码字符串,请将其剪切:

json_string = cont_js[20:]
解码JSON:

decoded_string = json.loads(json_string)
然后您可以访问您的数据:

id = decoded_string['MetaData']['Id']

在JS中可以使用JSON.parse(jsonString),在python中可以使用JSON.loads(JSON_string)完成Thanx.,我可以看到它在只包含json的json_字符串上工作。但是我如何从上面cont_js返回的sring中提取json代码呢?bs4.element.TagI get TypeError:Unhabable type:'slice'。cont_js是一个bs4.element.tag如果我尝试将它串起来:cont_js.string,那么我会得到一个如下的字符串:'\r\n\t\t