Chinaunix

标题: urllib中文问题 [打印本页]

作者: liu.xin    时间: 2012-03-07 14:54
标题: urllib中文问题
def inside(net):
        req = urllib2.Request(net)
        con=urllib2.urlopen(req).read()
        return con

定义一个函数,net为输入的网址。
现在是print con是可以读取到中文的内容
但return就不是了

麻烦问下怎么解决

谢谢
作者: timespace    时间: 2012-03-07 15:22
print con是中文就说明OK了
return con不会改变真实内容

“但return就不是了”是什么意思?请具体点说明
作者: liu.xin    时间: 2012-03-07 15:39
inside('http://www.baidu.com')
'<!doctype html><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>\xb0\xd9\xb6\xc8\xd2\xbb\xcf\xc2\xa3\xac\xc4\xe3\xbe\xcd\xd6\xaa\xb5\xc0     
作者: timespace    时间: 2012-03-07 15:43
只不过python转义了,依然是中文,该怎么用就怎么用
  1. >>> print '<!doctype html><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>\xb0\xd9\xb6\xc8\xd2\xbb\xcf\xc2\xa3\xac\xc4\xe3\xbe\xcd\xd6\xaa\xb5\xc0'
  2. <!doctype html><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>百度一下,你就知道
  3. >>>
复制代码

作者: liu.xin    时间: 2012-03-07 15:46
定义的列表是list=["搜索","专家"]
想判断list这些是不是都在return的内容里,这应该怎么写好?
作者: liu.xin    时间: 2012-03-07 15:56
本帖最后由 liu.xin 于 2012-03-07 15:56 编辑

我用英语做匹配就可以,但是用中文就不行··············
作者: timespace    时间: 2012-03-07 17:02
又没明白你是怎么个不行。。。
  1. >>> gb = '\xb0\xd9\xb6\xc8\xd2\xbb\xcf\xc2\xa3\xac\xc4\xe3\xbe\xcd\xd6\xaa\xb5\xc0'
  2. >>> print gb
  3. 百度一下,你就知道
  4. >>> gb.find('百度')
  5. 0
  6. >>> gb.find('知道')
  7. 14
  8. >>> import re
  9. >>> re.search(r'知道', gb)
  10. <_sre.SRE_Match object at 0x02A4F090>
复制代码

作者: timespace    时间: 2012-03-07 17:27
当然有个重点:匹配字符串和被匹配字符串的编码要一致
比如百度那个页面编码是gb2312,待搜索的字符串必须是gb2312编码或者两者都转为unicode
作者: bikong0411    时间: 2012-03-08 09:21

转化下编码就可以了
作者: shockbbs    时间: 2012-03-08 21:10
怎么转呢
作者: luckpiky    时间: 2012-03-08 23:56
urllib.urlopen(url).read().decode('gb2312')




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2