针对JSON响应进行Scrapy

时间:2017-08-20 15:56:49

标签: python json scrapy

我在Scrapy中抓取json响应时遇到问题。我收到以下错误:

TypeError:JSON对象必须是str,而不是'Response'

我尝试使用以下方法通过导入编解码器并将响应解码为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)

有谁知道出了什么问题?

1 个答案:

答案 0 :(得分:1)

如果你看type(response),那就是scrapy.http.response.text.TextResponse

response.bodyb'{"meta_description": "5192 realit v nab\\u00eddce prodej byt\\u016f, .... "collective"}}'

所以你需要使用

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

如果上述内容因Python版本无效,请尝试以下

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