scrapy 下载中间使使用HtmlResponse响应自定义内容HtmlResponse has no encoding

scrapy的下载中间使可以自定义一个响应,body内容是可以自定义的,如果报错:TypeError: Cannot convert unicode body - HtmlResponse has no encoding


Traceback (most recent call last):
  File "D:\ProgramData\Anaconda3\lib\site-packages\twisted\internet\defer.py", line 1418, in _inlineCallbacks
    result = g.send(result)
  File "D:\ProgramData\Anaconda3\lib\site-packages\scrapy\core\downloader\middleware.py", line 37, in process_request
    response = yield method(request=request, spider=spider)
  File "E:\python_project\specspider\specspider\mymiddlewares\DemoSpiderDownloaderMiddleware.py", line 142, in process_request
    res = HtmlResponse(url=request.url,body=content,request=request)
  File "D:\ProgramData\Anaconda3\lib\site-packages\scrapy\http\response\text.py", line 31, in __init__
    super(TextResponse, self).__init__(*args, **kwargs)
  File "D:\ProgramData\Anaconda3\lib\site-packages\scrapy\http\response\__init__.py", line 22, in __init__
    self._set_body(body)
  File "D:\ProgramData\Anaconda3\lib\site-packages\scrapy\http\response\text.py", line 47, in _set_body
    type(self).__name__)
TypeError: Cannot convert unicode body - HtmlResponse has no encoding


解决办法:

#指定一个编码即可 encoding="utf-8"
HtmlResponse(url=request.url,body=content,request=request,encoding="utf-8")


Tags python scrapy 爬虫

留言(0)

评论