Когда я использую Python Scrapy, мне нужно получить содержимое response.headers и преобразовать его в формат json, но тип response.headers не является строкой.
Вот мой код:
def start_requests(self):
url = example.com
yield scrapy.Request(url, callback=self.example)
def example(self,response):
print(type(response.headers),response.headers,sep='\n\n')
результат:
<class 'scrapy.http.headers.Headers'>
{b'Date': [b'Sun, 09 Feb 2020 11:40:32 GMT'], b'Content-Type': [b'text/html; charset=utf-8'], b'Last-Modified': [b'Thu, 06 Feb 2020 12:46:22 GMT'], b'Access-Control-Allow-Origin': [b'*'], b'Expires': [b'Sun, 09 Feb 2020 11:25:33 GMT'], b'Cache-Control': [b'max-age=600'], b'X-Proxy-Cache': [b'MISS'], b'X-Github-Request-Id': [b'7404:79E4:296ECA:2ED9E5:5E3FE9D4'], b'Via': [b'1.1 varnish'], b'Age': [b'20'], b'X-Served-By': [b'cache-sjc10050-SJC'], b'X-Cache': [b'HIT'], b'X-Cache-Hits': [b'1'], b'X-Timer': [b'S1581248432.467223,VS0,VE0'], b'Vary': [b'Accept-Encoding'], b'X-Fastly-Request-Id': [b'ea8aae70ba4691d060aeca764f445527279e23e7'], b'Cf-Cache-Status': [b'DYNAMIC'], b'Expect-Ct': [b'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"'], b'Server': [b'cloudflare'], b'Cf-Ray': [b'562591aedc3ded7b-SJC']}
Когда я использую json.dumps(response.headers)
, он всегда запрашивает TypeError: keys must be str, int, float, bool or None, not bytes