[问题] 爬虫抓下资料Decoding问题

楼主: atedps (苦哈哈)   2015-12-13 14:48:35
大家好,键盘小弟最近因为研究需求需要北捷各站点间通勤时间的资料,
而台北市政府的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出来跟原本的
文字会不一样
先感谢各位了 >_<
作者: can469086 (can)   2015-12-13 16:29:00
req = requests.get(url), req.encoding='utf-8', 再把
作者: alibuda174 (阿哩不达)   2015-12-13 16:29:00
a = u'\xe5\x8d\x97\xe4\xba....'u = bytearray(ord(c) for c in a).decode('utf-8')print(u)
作者: can469086 (can)   2015-12-13 16:30:00
req.text 丢给beautifulsoup分析

Links booklink

Contact Us: admin [ a t ] ucptt.com