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

作者: ResolaQQ (ResolaQQ)   2015-12-13 16:18:17
>>> wb = u'\xe5\x8d\x97\xe4\xba\xac\xe5\xbe\xa9\xe8\x88\x88'
>>> b = wb.encode('latin-1')
>>> u = b.decode('utf-8')
>>> print(u)
南京復興
※ 引述《atedps (苦哈哈)》之銘言:
: 大家好,鍵盤小弟最近因為研究需求需要北捷各站點間通勤時間的資料,
: 而台北市政府的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出來跟原本的
: 文字會不一樣
: 先感謝各位了 >_<
作者: atedps (苦哈哈)   2015-12-13 23:21:00
感謝,成功了!><可以請問為什麼encode和decode是不同的編碼方式嗎?
作者: POSIX (tedium of chores)   2015-12-15 01:00:00
神奇招式
作者: s860134 (s860134)   2015-12-15 01:01:00
我推文回溯被吃掉了 最厲害是你能解出他要的編碼
作者: uranusjr (←這人是超級笨蛋)   2015-12-15 13:58:00
latin-1 在實務上是萬用解碼, 只要是 8 bits 一組沒有解不開的東西, 所以他不是用猜的, 而是技巧 :)
作者: s860134 (s860134)   2015-12-15 22:10:00
原來如此 學到一課
作者: grtfor (哦啦啦)   2015-12-16 00:18:00
推一下,長知識了
作者: cobrasgo (人魚線變成鮪魚線,超帥)   2015-12-18 16:43:00
html參雜不只一種encode是怎麼回事XDDD

Links booklink

Contact Us: admin [ a t ] ucptt.com