我在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®ion=Praha']
def parse(self, response):
jsonresponse = json.loads(response)
print(jsonresponse)
我还尝试在使用json.loads时将.text添加到响应中,但后来我收到“响应没有属性'文本'”的错误。
jsonresponse = json.loads(response.text)
有谁知道出了什么问题?
答案 0 :(得分:1)
如果你看type(response)
,那就是scrapy.http.response.text.TextResponse
response.body
将b'{"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"))