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/cn.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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP