python 抓取的网页链接,链接中的中文乱码问题 200
我的系统是win7,在idel中编辑脚本,并按F5在shell中执行的。python抓取的网页链接,并把每个链接都保存到list中,然后遍历list将网址输出到pytho...
我的系统是win7,在idel中编辑脚本,并按F5在shell中执行的。
python抓取的网页链接,并把每个链接都保存到list中,然后遍历list将网址输出到python的shell上面,
网页的编码是gb2312,但是我的脚本是code:utf-8 。因为我要把抓取的数据保存到excel中。
所以我用:
html = urllib2.urlopen(url).read()
html = html.decode('gb2312','ignore').encode('utf-8')
应该可以把网页的编码转成html
然后我用正则表达式去匹配我要抓取的网址,
pattern = re.compile("<TD width='(.*?)'><a href='../(.*?)'",re.S)
listinfo = re.findall(pattern,html)
listinfo应该是一个list
然后我要把输入list
for i in listinfo:
print i[1]
在输出的时候,有的链接里含有中文,最奇怪的是:有的链接里中文乱码,链接是不能访问的。有的是没有乱码的,链接可以访问。请问这是为什么?如何才能不乱码?
部分截图如下:
如果中文乱码的话,为什么不是所有链接里含有的中文都乱码呢? 展开
python抓取的网页链接,并把每个链接都保存到list中,然后遍历list将网址输出到python的shell上面,
网页的编码是gb2312,但是我的脚本是code:utf-8 。因为我要把抓取的数据保存到excel中。
所以我用:
html = urllib2.urlopen(url).read()
html = html.decode('gb2312','ignore').encode('utf-8')
应该可以把网页的编码转成html
然后我用正则表达式去匹配我要抓取的网址,
pattern = re.compile("<TD width='(.*?)'><a href='../(.*?)'",re.S)
listinfo = re.findall(pattern,html)
listinfo应该是一个list
然后我要把输入list
for i in listinfo:
print i[1]
在输出的时候,有的链接里含有中文,最奇怪的是:有的链接里中文乱码,链接是不能访问的。有的是没有乱码的,链接可以访问。请问这是为什么?如何才能不乱码?
部分截图如下:
如果中文乱码的话,为什么不是所有链接里含有的中文都乱码呢? 展开
1个回答
展开全部
应该是shell的编码和listinfo编码不一样导致的,部分正常,部分乱码有可能是因为两种编码部分字符恰好一样。
试试
import sys
print i[i].encode(sys.getdefaultencoding())
追问
试了一下
print url.encode(sys.getdefaultencoding())
,使用获得系统默认编码还是不行,该乱码的还是乱码
追答
for i in listinfo:
print i[i].encode(sys.getdefaultencoding())
也不行?
代码都贴出来吧。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询