作者poopoo888888 (阿川)
看板Python
标题Re: [问题] 一个抓资料的问题
时间Thu Nov 3 08:40:23 2011
: cmd是指黑底的吗?? 黑底的应该比较容易正常说 虽然都转成unicode就没事了
: 我测试直接urllib2抓网页 有下面的结果
: http://dl.dropbox.com/u/24628527/TEST.PNG
: 用unicode来看都还蛮正常的 ( 用str不正常就不提了... windows oooos)
: 然後我也用了re (想学一直没空 我抄你的程式码) 有以下的结果
: http://dl.dropbox.com/u/24628527/test2.PNG
: 当然在黑底的cmd也是没问题
: 上面是在 windows xp
: python 2.5.4 测试的
: 蛮好奇你怎麽抓不出来@_@a
谢谢各位大大的帮忙!
我学KSJ大直接用re去处理fetch到的网页原始码
甚至不需要decode就可以正确显示那些中文字
response = urllib.urlopen(url)
page = response.read()
number = re.findall(u"frmlist.no.value='(.+)';frmlist.foreigner.value",
page)
for n in number:
print n
(其实这边我满疑惑的 我没做decode 表示收到的是网页原始的big5编码资料
在windows XP用cp950编码的cmd模式下为什麽可以正确显示?)
至於我用BeautifulSoup先parse再做re而遇到的问题 则出在这里:
page = response.read()
u_page = page.decode('big5')
tags = BeautifulSoup(u_page).findAll('a')
这样decode时会出错
改成u_page = page.decode('big5', 'ignore')就可以了
但我却有了新的疑问
为什麽要加上'ignore'参数?
是叫它忽略掉看不懂的byte吗
又为什麽会有看不懂的byte呢 是因为big5看不懂某些中文字吗?
不好意思 新手上路 问题有点多
谢谢大家
P.S.
KSJ大 我找到一份不错的学re资源跟您分享
http://www.diveintopython.net/regular_expressions/index.html
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.166.194.46
※ 编辑: poopoo888888 来自: 218.166.194.46 (11/03 08:46)
1F:→ buganini:因为big5差不多就是cp950 所以cmd当然可以显示 11/03 10:22
2F:→ buganini:decode失败可能是因为里面有unicode at once之类的东西 11/03 10:23
4F:→ buganini:用到不同的就有可能出错 11/03 10:24
5F:→ poopoo888888:原来是这样!! 谢谢您!! 11/03 13:25