我正在使用python并请求module == 2.18.4
在使用请求抓取某些数据时,我使用了日志记录模块进行调试。
我希望日志看起来像这样:
[DEBUG] 2018-01-25 03:15:36,940 http://localhost:8888 "GET /aaa" 200 2290
[DEBUG] 2018-01-25 03:15:36,940 http://localhost:8888 "GET /aaa" 200 2290
[DEBUG] 2018-01-25 03:15:36,940 http://localhost:8888 "GET /aaa" 200 2290
但我明白了:
[DEBUG] 2018-01-25 03:15:36,940 http://localhost:8888 "GET /aaa" 200 2290
[DEBUG] 2018-01-25 03:15:36,974 EUC-JP Japanese prober hit error at byte 1765
[DEBUG] 2018-01-25 03:15:36,990 EUC-KR Korean prober hit error at byte 1765
[DEBUG] 2018-01-25 03:15:36,994 CP949 Korean prober hit error at byte 1765
[DEBUG] 2018-01-25 03:15:37,009 EUC-TW Taiwan prober hit error at byte 1765
[DEBUG] 2018-01-25 03:15:37,036 utf-8 not active
[DEBUG] 2018-01-25 03:15:37,036 SHIFT_JIS Japanese confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,036 EUC-JP not active
[DEBUG] 2018-01-25 03:15:37,036 GB2312 Chinese confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,036 EUC-KR not active
[DEBUG] 2018-01-25 03:15:37,036 CP949 not active
[DEBUG] 2018-01-25 03:15:37,036 Big5 Chinese confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,036 EUC-TW not active
[DEBUG] 2018-01-25 03:15:37,036 windows-1251 Russian confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 KOI8-R Russian confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 ISO-8859-5 Russian confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 MacCyrillic Russian confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 IBM866 Russian confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 IBM855 Russian confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 ISO-8859-7 Greek confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 windows-1253 Greek confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 ISO-8859-5 Bulgairan confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 windows-1251 Bulgarian confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 TIS-620 Thai confidence = 0.01
[DEBUG] 2018-01-25 03:15:37,038 ISO-8859-9 Turkish confidence = 0.47949350706
[DEBUG] 2018-01-25 03:15:37,038 windows-1255 Hebrew confidence = 0.0
[DEBUG] 2018-01-25 03:15:37,038 windows-1255 Hebrew confidence = 0.0
[DEBUG] 2018-01-25 03:15:37,038 windows-1255 Hebrew confidence = 0.0
...
我不想在日志中使用该编码。我该如何删除它们?
答案 0 :(得分:7)
尝试将模块chardet.charsetprober
的日志记录级别设置为高于DEBUG的值(例如INFO)。
logger = logging.getLogger('chardet.charsetprober')
logger.setLevel(logging.INFO)
答案 1 :(得分:3)
我遇到了同样的问题,发现这些额外的日志来自chardet.charsetprober
模块。
要取消这些日志,请在导入后输入。
logging.getLogger('chardet.charsetprober').setLevel(logging.INFO)
这不会打印来自chardet.charsetprober
模块的任何DEBUG
级别消息,您只能获得所需的日志消息。
希望它有所帮助!
答案 2 :(得分:2)
response.content.decode('ISO-8859-1')
将它设置为mix-charset解码,为我工作
答案 3 :(得分:1)
我认为此问题与r.text
(text
返回的response
属性有关)。由于requests
不知道具体的编码,因此必须尝试,因此记录了长列表。为避免这种情况,您可以在访问INFO
之前将日志记录级别设置得更高(例如r.encoding='utf-8'
),或指定编码(r.text
或您喜欢的任何内容)。
答案 4 :(得分:0)
我不确定我是否正确理解您的问题,为什么不能将此邮件分隔到不同的日志记录级别。
答案 5 :(得分:0)
如其他答案所述,当您调用r.text
字段时,请求库将尝试猜测文本的编码。
在某些情况下,可以使用r.content
字段(二进制响应内容)代替r.text
来避免这种猜测过程。