aiohttp遇到非法字元的處理(UnicodeDecodeError: 'utf-8' codec can't decode bytes in position......)
這個問題困擾了我將近一天時間,如果使用text()函式會一直報“UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 24461-24462: invalid continuation byte”的錯誤,如果使用read()函式以二進位制輸出在後面解析的時候中文是亂碼,網上查了很多資料,主要也是自己的疏忽自己看了原始碼,一直糾結在編碼問題忽略了另一個帶預設值的引數
下面是解決方案:
import aiohttp import asyncio headers = { "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Encoding": "gzip, deflate, sdch, br", "Accept-Language": "zh-CN,zh;q=0.8", } async def ss(): async with aiohttp.ClientSession() as session: async with session.get('http://www.iteye.com/blogs/tag/java',headers=headers) as resp: print(resp.status) # ignore,則會忽略非法字元,預設是strict,代表遇到非法字元時丟擲異常 d = (await resp.text("utf-8","ignore")) # d = await resp.read() # d = await resp.text() cc(d) def cc(v): print(v) soup = BeautifulSoup(v, "lxml") contents = soup.select("div.content") for conten in contents: articleAuthor = conten.select("div.blog_info > a") if articleAuthor: print(articleAuthor) articleAuthor = articleAuthor[0] else: articleAuthor = "" print(articleAuthor) loop = asyncio.get_event_loop() tasks = [ss() ] loop.run_until_complete(asyncio.gather(*tasks))
這樣結果中文就正常顯示("utf-8"其實不是必須的因為預設就是utf-8):
如果是await resp.text()就直接報錯:
如果是await resp.read(),在解析時中文亂碼:
text的原始碼:
@asyncio.coroutine def text(self, encoding=None, errors='strict'): """Read response payload and decode.""" if self._content is None: yield from self.read() if encoding is None: encoding = self._get_encoding() return self._content.decode(encoding, errors=errors)
預設的引數就是strict,代表遇到非法字元時丟擲異常;
如果設定為ignore,則會忽略非法字元;
相關推薦
aiohttp遇到非法字元的處理(UnicodeDecodeError: 'utf-8' codec can't decode bytes in position......)
這個問題困擾了我將近一天時間,如果使用text()函式會一直報“UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 24461-24462: invalid continuation byte”的
word2vec查詢詞向量時報錯:'utf-8' codec cann't decode bytes in position 96-07:unexpected end of data
載入word2vec模型時報錯: model_path = "model/Hanlp_cut_news.bin" w2v_dict = word2vec.load(model_path) print(w2v_dict["奧運"])
解決UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte問題
本文最後更新於2018-6-20,可能會因為沒有更新而失效。如已失效或需要修正,請聯絡我! 早上在用Flask框架時出現了這個問題,我在原始碼裡寫的是 @app.route('/hello') def hello(): return render_te
部署django中出現UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 3解決方案
在《Python入門到實踐》18.3例程中,編寫好index.html <p>Learning Log</p><p>Learning Log helps you keep track of your learning,for any to
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa8 in position 怎麼辦
如題,我遇到了要讀取csv結果發生: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa8 in position 2987: invalid start byte 怎麼辦呢? 原來的csv儲存命令是: df.t
Python3解決UnicodeDecodeError: 'utf-8' codec can't decode byte..問題 終極解決方案
0x00 問題引出: 最近在做一個買房自動化分析Python指令碼,需要爬取網頁。 在使用urllib獲取reqest的response的時候,還要進行解碼。 見語句: result = res.decode('utf-8') 當執行該語句的時候,
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte...
其他 編碼問題 nbsp pan utf-8 erro can 問題 報錯 1. 編碼問題, 如果來源為編碼為其他的,而是用utf-8去解碼就會報錯。 2. 如果只是有部分無法解碼, 則添加 ‘ingnore’ 參數 a = b‘...‘ result = a.d
【轉】UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc7 in position 1: invalid continuation 漢字編碼
如果在python 3裡面碰到下面的Error message: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc7 in position 1: invalid continuation byte。 你很可
TensorFlow學習筆記(UTF-8 問題解決 UnicodeDecodeError- 'utf-8' codec can't decode byte 0xff in position 0- in
我使用VS2013 Python3.5 TensorFlow 1.3 的開發環境 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte 在
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte解決方法
最近在學機器學習,看《機器學習實戰》,因為書上的程式碼是在Python2下編寫的,所以轉到Python3會有許多問題需要修改。 第3章決策樹有一個函式如下: def grabTree(filename): import pickle fr = open(f
TensorFlow學習筆記(UTF-8 問題解決 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: in
今天在跑跑程式碼時,遇到了標題的問題,然後網上查了下,在此處: http://www.cnblogs.com/Qt-Chao/p/7474360.html 剛剛好講解了解決該問題的辦法,這裡當作一個筆記,記錄下來。 我使用VS2013 Python3.5 Tenso
python 字串輸出報錯 'utf-8' codec can't encode characters in position
一些字串無法被utf-8解碼,所以可以把無法轉化為utf-8格式的字元‘ignore’掉,再進行解碼。 str().encode('UTF-8', 'ignore').decode('UTF-8') 測試程式碼: text = ''' '\n
處理UnicodeDecodeError: ‘XXX' codec can't decode bytes in position...的問題
錯誤資訊: UnicodeDecodeError: ‘XXX' codec can't decode bytes in position 2-5: illegal multibyte sequence 這是因為遇到了非法字元,例如:全形空格往往有多種不同的實現方式,比如\
UnicodeEncodeError:'utf-8' codec can't encode characters in position 380-382: surrogates not allowed
考慮是某些字元無法解碼為utf-8的編碼格式,把dataframe(meta)的元素,在編碼過程中,先把無法轉化為utf-8格式的字元‘ignore’掉,再進行解碼。for i in meta: for j in meta.index: meta.lo
python 讀取資料出現UnicodeDecodeError:: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid contin
之前寫程式時也出現過類似錯誤,每次解決了到第二次遇見又忘了具體方法,這次記錄一下。 一、字元編碼問題 先介紹一下字元編碼問題 1.ASCLL與GB2312 由於計算機是美國人發明的,因此,最早只有127個字元被編碼到計算機裡,也就是大小寫英文字母、數字和一些符號,這個
python3 'utf-8' codec can't decode byte 0xb3
問題:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 109: invalid start byte 該問題發生於decode解碼; 編碼與解碼: 編碼就是將字串轉換成位元組碼,涉
tensorflow讀不出圖片,出現'utf-8' codec can't decode..錯誤
首先我試了《實戰Google深度學習框架》這本書,結果圖片讀不出來,上網隨便找了個簡單的程式讀,還是讀不出來,我就查資料,執行以下程式 import importlib importlib.reload(sys) 然後簡單的搞定了,但書裡的 image_raw
python報錯"utf-8 codec can't decode byte 0x"
望文生義,報錯的內容就是說utf-8的編碼方式不能解碼0x的位元組,選擇正確的解碼方式就可以解決。 深入些理解,可以把編碼就是編成位元組資料,就是二進位制的東西,解碼以後就是我們看懂的字串,python裡面就是unicode型別。但是打碼的方式有很多,需要採用適合的方法(打
python3:(unicode error) 'utf-8' codec can't decode
環境: 作業系統:win7 旗艦版 語言:python3.4 文字編輯器:vim、notepad++ 報錯:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb4 in position 0:
'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte 覺得有用的話,歡迎一起討論相互學習~Follow Me 今天使用語句 image_raw_data_jpg