2017-03-05 17 views
0

ich Scrapy verwenden Spinne zu schreiben, aber ich treffe diesen Fehler .Hier ist mein Code:Typeerror: to_bytes muss eine Unicode, str oder Bytes Objekt erhalten, wurde eingestellt

# -*- coding: utf-8 -*- 
import scrapy 

class ZhihuSpider(scrapy.Spider): 
    name = "zhihu" 
    allowed_domains = ["www.zhihu.com"] 

    def start_requests(self): 
     return [scrapy.Request('http://www.zhihu.com/#signin')] 

    def parse(self, response): 
     print response 

die Informationen des Fehlers:

Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 1183, in 
_inlineCallbacks 
    result = result.throwExceptionIntoGenerator(g) 
    File "C:\Python27\lib\site-packages\twisted\python\failure.py", line 389, in t 
hrowExceptionIntoGenerator 
    return g.throw(self.type, self.value, self.tb) 
    File "C:\Python27\lib\site-packages\scrapy\core\downloader\middleware.py", lin 
e 37, in process_request 
    response = yield method(request=request, spider=spider) 
    File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 587, in _ 
runCallbacks 
    current.result = callback(current.result, *args, **kw) 
    File "C:\Python27\lib\site-packages\scrapy\downloadermiddlewares\robotstxt.py" 
, line 45, in process_request_2 
    to_native_str(self._useragent), request.url): 
    File "C:\Python27\lib\site-packages\scrapy\utils\python.py", line 127, in to_n 
ative_str 
    return to_bytes(text, encoding, errors) 
    File "C:\Python27\lib\site-packages\scrapy\utils\python.py", line 117, in to_b 
ytes 
    'object, got %s' % type(text).__name__) 
TypeError: to_bytes must receive a unicode, str or bytes object, got set 
+0

Die Python-Fehlermeldung sagt genau, wo was schief gelaufen ist. Sie müssen den ** verbatim ** Fehler teilen. –

+0

ich shard den verbatim Fehler – wnj

Antwort

-1

Sie können den Fehler treffen, wenn Sie versuchen, den falschen Datentyp zu verwenden. Zum Beispiel:

str = 15 
print str.encode("ascii") # Error occurs 

str = "15" 
print str.encode("ascii") # Right code because encode function belongs to unicode string data type but not integer. 
+1

Allerdings gibt es keinen Code wie folgt, warum mein Code sollte diesen Fehler erhalten? – wnj

0

Ihre allowed_domains nicht gültig ist, wie dies

allowed_domains = ["zhihu.com"] 

In scrapy.core.downloader.webclient.py wird jede URL analysiert werden. Die Funktion to_bytes prüft, ob es sich um None handelt, andernfalls wird eine TypeError ausgelöst.

Verwandte Themen