[問題] 爬蟲抓下資料Decoding問題

看板Python作者 (苦哈哈)時間10年前 (2015/12/13 14:48), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/2 (看更多)
大家好,鍵盤小弟最近因為研究需求需要北捷各站點間通勤時間的資料, 而台北市政府的Open Data好像也沒有找到這方面的資料。因此 想說自己寫了一隻爬蟲去抓這些資料,但抓下來的資料在中文 站名的部分總會變成亂碼,我大概知道這是Encoding或Decoding 相關的問題,但是礙於自己這方面知識沒有很充足,所以昨天 Google了很久還是找不到答案,因此決定來問問版上的大大們。 我是使用最基本的方式用request抓下html檔案後再用BeautifulSoup去分析, 但取出來的中文text會變成一個unicode的type的物件 如u'\xe5\x8d\x97\xe4\xba\xac\xe5\xbe\xa9\xe8\x88\x88' 但如果我手動把這個物件引號部分的資料複製出來當作一個字串再用utf8去decode的話就 可以順利跑出中文字。如: tex = '\xe5\x8d\x97\xe4\xba\xac\xe5\xbe\xa9\xe8\x88\x88' msg = tex.decode('utf8') print msg 南京復興 因此我想問的是,有沒有什麼方式是可以把我原本unicode物件裡面引號的部分 取出來的,因為我也不可能每次都用手動去複製貼上QQ。或者是有沒有辦法 讓我一開始抓下來的中文字不要變成unicode物件,而直接是一個單純字串。 我試過str()的方式,裡面的文字會變成另外一個編碼,造成decode出來跟原本的 文字會不一樣 先感謝各位了 >_< -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.98.254 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1449989317.A.555.html

12/13 16:29, , 1F
req = requests.get(url), req.encoding='utf-8', 再把
12/13 16:29, 1F

12/13 16:29, , 2F
a = u'\xe5\x8d\x97\xe4\xba....'
12/13 16:29, 2F

12/13 16:29, , 3F
u = bytearray(ord(c) for c in a).decode('utf-8')
12/13 16:29, 3F

12/13 16:29, , 4F
print(u)
12/13 16:29, 4F

12/13 16:30, , 5F
req.text 丟給beautifulsoup分析
12/13 16:30, 5F
文章代碼(AID): #1MRHJ5LL (Python)
文章代碼(AID): #1MRHJ5LL (Python)