Python 板


LINE

大家好 我最近在爬蟲一個網站 使用的版本是python 3.4 在編碼上面遇到一個奇怪的問題 首先先request url url = 'http://lvyou.baidu.com/taibei/' res = requests.get(url) res.encoding = 'utf-8' res.text裡面有一段感覺是JavaScript用的json if(false == "0"){ define('besttime',{text:"10\u6708-11\u6708\u662f\u6e38\u53f0\u5317\u7684\u6700\u4f73\u65f6\u95f4\uff0c\u6b64\u65f6\u6c14\u6e29\u572822\u2103\u201424\u2103"}); } 10\u6708-11 一直編碼不出來,原文是簡體中文 可是奇怪的是 我在下面另個變數等於他 aa = '10\u6708-11' print(aa) >> 10月-11 這樣就可以顯示了 請問為什麼網頁爬下來的編碼不成,另存變數卻可以? 謝謝大家 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.62.150
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1466048341.A.830.html ※ 編輯: allan80625 (118.163.62.150), 06/16/2016 11:39:45
1F:→ uranusjr: 你上面的那段我砍掉多餘的換行後可以直接執行無誤 06/16 12:20
2F:→ uranusjr: 所以問題不是這段文字, 是你其他程式 06/16 12:21
你是說把if那段直接print出來嗎? 直接print出來是可以轉成中文 這樣就跟我下面另存成aa的做法一樣 問題點是在爬蟲下來的if那段\u6708無法解碼 原始網站的網站原始碼if那一段也是\u6708這樣顯示 付上處理的網站 http://lvyou.baidu.com/taibei/
3F:推 CaptainH: 一樓 我想他的意思是html raw text 的\UXXXX 06/16 14:50
是的,那段一直無法解碼成中文
4F:→ uranusjr: 好像懂了, 可以參考這個 http://bit.ly/1UAtjlT 06/16 17:54
這方法有試過了,還是無法 ※ 編輯: allan80625 (118.163.62.150), 06/16/2016 20:17:45
5F:→ qwertmn: 其實你已經找到答案了啊~ 他就是json string 06/16 21:34
6F:→ qwertmn: json.loads(r'"10\u6708-11\u6708"') 06/16 21:35
7F:→ qwertmn: 另外就是 uranusjr 的方法也是可以work 的喔~ 06/16 21:39
8F:→ qwertmn: 恩- - 他是js 的dict.. 不是json 沒看仔細XDDDD 06/16 21:45
9F:→ qwertmn: 不過忘了說, 如果你用json or unicode-escape 都沒辦法處 06/16 23:35
10F:→ qwertmn: 理, 那應該是系統問題了~ 我自己試都可以 06/16 23:36
11F:→ s860134: 這問題沒那麼難懂... 你看到 \u6708 的字串在 python 中 06/17 02:28
12F:→ s860134: 是因為 你輸入'\u6708' \u被視為 unicode 的 prefix 06/17 02:30
13F:→ s860134: 所以她自然會把他轉成你看到的 10月 06/17 02:30
14F:→ s860134: 但是網頁原始碼中是真正寫著 "\u6708" 6個字 06/17 02:33
15F:→ s860134: 從檔案讀進 python 顯示應該是 '\\u6708' 06/17 02:35
16F:→ s860134: '\\' 代表單斜線,python 字串中單個 \ 是跳脫字元 06/17 02:36
17F:→ s860134: 簡單來說 print("\u6708")→月,print("\\u6708")→\u6708 06/17 02:48
18F:→ s860134: len('\u6708') == 1 , len('\\u6708') == 7 06/17 02:56
19F:→ s860134: 打錯 len('\\u6708') == 6 06/17 02:56
20F:→ s860134: chr(int('6708',16)) == '\u6708' 06/17 03:07
感謝,成功了,真的是因為兩個斜線的問題 後來我用json.dumps(besttime,ensure_ascii=False) print出來發現是\\u什麼的 所以我又在後面replace(兩個斜線,一個斜線) 再用json.loads就可以了 abc = json.dumps(besttime,ensure_ascii=False).replace('\\\\','\\') aaa = json.loads(abc) print(aaa) 成功!! 謝謝大家^^ ※ 編輯: allan80625 (118.163.62.150), 06/17/2016 10:15:19







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP