2017-08-20 18 views
0

Scrapyでjsonレスポンスをスクラップする際に問題が発生しています。私は、次のエラーを取得しています:JSONレスポンスでの治療

はTypeError:JSONオブジェクトは、ない「レスポンス」をstrをしなければならない

私は、それはコーデックを輸入し、UTF-8への応答をデコードすることにより、以下のものを使用してデコードすることを試みたが、それは何らかの理由で動作していません。コード:

import scrapy 
import json 

class SrealitkyBuySpiderSpider(scrapy.Spider): 
    name = "srealitky_buy" 
    allowed_domains = ["https://www.sreality.cz/"] 
    start_urls = ['https://www.sreality.cz/api/cs/v2/estates?category_main_cb=1&category_type_cb=1&per_page=20&region=Praha'] 

    def parse(self, response): 
     jsonresponse = json.loads(response) 
     print(jsonresponse) 

json.loadsを使用したとき、私はまた、応答には.textを追加しようとしたが、その後私は、「応答が全く属性 『テキスト』を持っていない」というエラーが発生します。

jsonresponse = json.loads(response.text) 

何が間違っているのですか?

+0

Cuberさん、ありがとう、私はちょうど私の最初の質問を編集しました。 reponse.textをjson.loadsに追加しようとしましたが、「AttributeError:レスポンスオブジェクトに属性 'text'がありません」というエラーが発生しました... – Svarto

答えて

1

あなたはtype(response)を見れば、それはscrapy.http.response.text.TextResponse

そしてresponse.bodyだろうだから、あなたが上記の場合

jsonresponse = json.loads(response.body) 
print(jsonresponse["meta_description"]) 
'5192 realit v nabídce prodej bytů, Praha. Vyberte si novou nemovitost na sreality.cz s hledáním na mapě a velkými náhledy fotografií nabízených bytů.' 

編集-1

を使用する必要がb'{"meta_description": "5192 realit v nab\\u00eddce prodej byt\\u016f, .... "collective"}}'

を与えますPythoのためにあなたのために働かないnバージョンを試す

jsonresponse = json.loads(response.body.decode("utf-8")) 
+0

ありがとう!それでもjson.loads(response.body)を使用しても動作しません: "TypeError:JSONはstrでなければならず、 'バイトではありません" – Svarto

+0

どのバージョンのPythonですか? –

+0

編集しました。それが –