猿问

无法使用 selenium 和 Python 从 URL 获取正确解码的 json 响应

我正在尝试从如下网址获取 json 响应


https://www.skroutz.gr/personalization/16890962/product_prices.js?_=1569161647

使用


driver.get(url2besearched)

我得到类似的东西:


SKR.page.blps = [{"id":42507097,"final_price":530.25,"payment_method_cost":"\u003cem\u003e+ 3,00 €\u003c/em\u003e \u003cspan\u003eΑντικαταβολή\u003c/span\u003e","net_price":527.25,"net_price_formatted":"527,25 €","final_price_formatted":"530,25 €","shop_id":514,"no_credit_card":false,"sorting_score":[-4.8549,-340,-83,514,10],"shipping_cost":"\u003cem\u003e+ 0,00 €\u003c/em\u003e \u003cspan\u003eΜεταφορικά\u003c/span\u003e","link":"/products/show/42507097"},{"id":42755991,"final_price":532.7,"payment_method_cost":"\u003cem\u003e+ 2,50 €\u003c/em\u003e \u003cspan\u003eΑντικαταβολή\u003c/span\u003e","net_price":530.2,"net_price_formatted":"530,20 €","final_price_formatted":"532,70 €","shop_id":9,"no_credit_card":false,"sorting_score":[-3.45507,-107,-179,9,10],"shipping_cost":"\u003cem\u003e+ 0,00 €\u003c/em\u003e \u003cspan\u003eΜεταφορικά\u003c/span\u003e","link":"/products/show/42755991"},{"id":42901383,"final_price":507.8,"payment_method_cost":"\u003cem\u003e+ 2,90 €\u003c/em\u003e \u003cspan\u003eΑντικαταβολή\u003c/span\u003e","net_price":502.0,"net_price_formatted":"502,00 €","final_price_formatted":"507,80 €","shop_id":394,"no_credit_card":false,"sorting_score":[-4.67046,-198,-199,394,10],"shipping_cost":"\u003cem\u003e+ 2,90 €\u003c/em\u003e \u003cspan\u003eΜεταφορικά\u003c/span\u003e","link":"/products/show/42901383"};

if (typeof performance !== 'undefined' && typeof performance.mark!=='undefined'){

performance.mark('BLP.response');

}

我试过 driver.get(url2besearched).json() 但我得到 'NoneType' 对象没有属性 'json'


如何获取 shopid 和 final_price_formatted 的值?


杨__羊羊
浏览 204回答 2
2回答

慕森卡

您需要解析响应以仅获取{"id":42507097,"final_price"...}您需要的字符串json.loads(parsedResp),因此与您的问题相关,我的解决方案是:import requestsimport jsonresponseRow = requests.request('GET',    'https://www.skroutz.gr/personalization/16890962/product_prices.js?_=1569161647')responseTmp = responseRow.textresponseList = responseTmp.split('=')responseParsed = responseList[1].split(';')[0]responseList = json.loads(responseParsed)print(responseList[0]['shop_id'])print(responseList[0]['final_price_formatted'])

翻翻过去那场雪

我试过了fp = urllib.request.urlopen(url2besearched)mybytes = fp.read()mystr = mybytes.decode("utf8")fp.close()mystr = mystr.rsplit('=')mystr = mystr[1].split(";")mystr = mystr[0]    json_str = json.loads(mystr)但我不确定这是否是正确的方法
随时随地看视频慕课网APP

相关分类

Python
我要回答