在Python Scrapy中将HTTP标头作为Float发送

时间:2017-08-30 16:39:41

标签: python scrapy

我正在尝试在一个只接受float格式的头文件中接受一些值的API,当我以字符串形式发送它时,它会给出400 Bad Request,当我尝试以float格式发送头文件时scrapy会给出像这样的错误:

self.headers = Headers(headers or {}, encoding=encoding)
File "C:\Python27\lib\site-packages\scrapy\http\headers.py", line 12, in __init__
super(Headers, self).__init__(seq)
File "C:\Python27\lib\site-packages\scrapy\utils\datatypes.py", line 193, in __init__
self.update(seq)
File "C:\Python27\lib\site-packages\scrapy\utils\datatypes.py", line 229, in update
super(CaselessDict, self).update(iseq)
File "C:\Python27\lib\site-packages\scrapy\utils\datatypes.py", line 228, in <genexpr>
iseq = ((self.normkey(k), self.normvalue(v)) for k, v in seq)
File "C:\Python27\lib\site-packages\scrapy\http\headers.py", line 27, in normvalue
return [self._tobytes(x) for x in value]
File "C:\Python27\lib\site-packages\scrapy\http\headers.py", line 40, in _tobytes
raise TypeError('Unsupported value type: {}'.format(type(x)))
TypeError: Unsupported value type: <type 'float'>
None

任何人都有任何解决方案或面临similer的问题吗?

1 个答案:

答案 0 :(得分:5)

首先,标题始终以字符串形式发送。标题没有数据类型,如int,bool,float。

我可能会向Api发送一个标题X-RELOAD-TIME 2.0003355,但这并不意味着我需要2.0003355作为浮点数。这就是图书馆抱怨的内容

所以在你的headers确保

headers["Name-Of-Float-Header"] = str(float_value)

然后调用应该可以通过