问题原因:
requests.exceptions.InvalidHeader: Invalid return character or leading space in header报错是因为header头部中有非法字符,一般出现在请求头中的某些参数出现了空格或换行符等非法字符。
解决办法:
-
检查请求头中有没有多余的空格和换行符。
-
对于类似这种问题,可以使用str.strip()方法来消除空格和换行符。例如:
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
headers = {key:value.strip() for key,value in headers.items()}
在使用strip()方法之后,可以避免出现InvalidHeader错误。
- 使用正则表达式来过滤出不合法的字符,例如:
import re
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
pattern = re.compile('[\n\r]')
headers = {key:pattern.sub('', value) for key, value in headers.items()}
在使用正则表达式之后,可以避免出现InvalidHeader错误。
- 如果都不能解决问题,可以尝试更换requests库的版本,或者使用其他请求库。
以上是InvalidHeader错误的原因及解决办法的完整攻略,希望对你有所帮助。