1.存在乱码的主要问题是文字编码的问题。有些网站的页面是utf-8, gb2312等编码格式,python 系统默认的编码额格式一般为utf-8 格式。如果网页的编码格式为utf-8 ,系统默认的也是utf-8 ,那么显示就不会有太大的问题。但是如果网页是 GB2312 的,用uft-8 显示,则会出现乱码的问题。
2.python 库 chartdet 可以用来检测字符串的编码方式。
print sys.getfilesystemencoding()
print 'Html is encoding by : %',chardet.detect(GetHtml(url))
3.示例1. 网页为GB2312,
__author__ = 'xiaolong'
# -*- coding:utf-8 -*- #
import urllib
import re
import sys
import chardet
def GetHtml( url):
page = urllib.urlopen(url)
contex = page.read()
return contex
def GetLink(html):
reg = r' (.+) '
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
return imglist
url = "http://www.taobao.com/"
get = GetLink(GetHtml(url).decode('GB2312').encode('utf-8'))
print sys.getfilesystemencoding()
print 'Html is encoding by : %',chardet.detect(GetHtml(url))
for each in get:
for list in each:
print list,
print '\n'
3.1分析淘宝首页的内容。其中有一段如下,抓取下面格式的内容,网址+中文标题。
/usr/bin/python2.7 /home/xiaolong/PycharmProjects/GetJpg/function.py
UTF-8
Html is encoding by : % {'confidence': 0.99, 'encoding': 'GB2312'}
http://trip.taobao.com/?spm=1.7281509.a214dau.4 阿里旅行
http://sf.taobao.com/?spm=1.7281509.a214dau.5 司法拍卖
http://www.etao.com/?spm=1.7281509.a214dau.6&tb_lm_id=t_zdh 一淘
http://3c.tmall.com/?spm=1.7281509.a214dau.7 电器城
http://www.taobao.com/go/chn/hitao/top.php?spm=1.7281509.a214dau.8 美妆闪购
http://yun.taobao.com/?spm=1.7281509.a214dau.9 阿里小智
http://china.chi.taobao.com/?spm=1.7281509.a214dau.10 特色中国
Process finished with exit code 0
GetHtml(url).decode('GB2312').encode('utf-8')
就是对读取到的网页先进行GB2312 的解码, 在用 utf-8 编码,才能以utf -8 的系统中正确的显示汉字。
若不进行编码转换,则控制台输出如下:
/usr/bin/python2.7 /home/xiaolong/PycharmProjects/GetJpg/function.py
UTF-8
Html is encoding by : % {'confidence': 0.99, 'encoding': 'GB2312'}
http://trip.taobao.com/?spm=1.7281509.a214dau.4 ��������
http://sf.taobao.com/?spm=1.7281509.a214dau.5 ˾������
http://www.etao.com/?spm=1.7281509.a214dau.6&tb_lm_id=t_zdh һ��
http://3c.tmall.com/?spm=1.7281509.a214dau.7 ������
http://www.taobao.com/go/chn/hitao/top.php?spm=1.7281509.a214dau.8 ��ױ����
http://yun.taobao.com/?spm=1.7281509.a214dau.9 ������
http://china.chi.taobao.com/?spm=1.7281509.a214dau.10 ��ɫ�й�
Process finished with exit code 0
__author__ = 'xiaolong'
# -*- coding:utf-8 -*- #
import urllib
import re
import sys
import chardet
def GetHtml( url):
page = urllib.urlopen(url)
contex = page.read()
return contex
def GetLink(html):
reg = r'\n'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
return imglist
url = "http://blog.sina.com.cn/s/blog_538268a00102veui.html?tj=1"
get = GetLink(GetHtml(url))
print 'System default encoding: ',sys.getfilesystemencoding()
print 'Html is encoding by : %',chardet.detect(GetHtml(url))
for each in get:
print each
一次研讨会上有学者让我谈谈中国外交的新特点,我说了三个词儿:大了,硬了,活了。王岐山访美,更像是一盘大棋,显示中美在包括反腐在内等涉及诸多敏感问题上的合作。有必要就此再聊下。
大了,很好理解,就是说以前的中国外交是外交部的外交,而现在外交和经济、军事、国家安全的联系更加紧密。外交部的外交,更重视双边外交系统的对接,而今各种事务交织在一起,格局需要够大才可以推进。比如说抓捕贪官的猎狐行动,这次王岐山访美肯定要细谈这方面的合作。这就是大外交,需要外交、司法系统携手,和国外相关机构达成合作,共同抓捕贪官归案。而国家安全委员会的构架,更是外交、内政协调的机构。
硬了,就是说更加敢作敢为。对日本,对菲律宾,果敢地亮出态度。尤其是日本,在世界范围内死磕,显示出近年来少有的意志。在维护国家利益方面,更是出手果断,向南苏丹派驻军队,显示出维护海外经济利益的决心。在联合国层面,态度更加坚决,敢于说不,敢于支持,不再是永远的弃权。
活了,就是不再拘泥于一些过时的原则,不再拘泥于是友是敌,而是根据实际情况,全方位发展和各国的友好关系。中国外交灵活的最明显例子就是对朝鲜。作为中国的同志加兄弟,朝鲜多年来对中国表现出不尊重的态度,中国新一届领导开始执政后,不访问朝鲜,而是访问韩国,大力发展和韩国的友好关系,这短期内可能让朝鲜不满,但长期看有利于中国在东北亚变局中的主导作用。
这三个特点是既成事实,不能简单说这样好还是不好。如果理性地分析就会发现,在外交的战略层面,中国依然有诸多模糊不清之处。
首先,在外交指导思想方面,是固守韬光养晦还是强调有所作为?这两者当然并不矛盾,但有所作为重点在哪些方面?是不是别给外界中国秀肌肉的感觉?这都需要通盘考虑。
其次,在外交具体行为方面,是继续恪守主权神圣不可侵犯原则,还是部分地认同人权高于主权?我想短期内中国不会改变,但有些具体案例,如伊拉克内乱给中国造成损失如何应对,确实需要行为准则方面给予指导。
第三,在大国关系方面,是和西方更加靠近,还是和俄罗斯抱团取暖,这非常关键。我一直认为,中国和俄罗斯无限度地靠近,将是中国的灾难。中国可以在美俄间平衡,但决不能无原则地支持俄罗斯。
总之,中国外交的新特点表明中国毫无疑问是外交大国,但还不是外交强国,在国际规则的确立、冲突调解方面还不是主导性力量。从外交大国到外交强国,还有很长的路要走。
/usr/bin/python2.7 /home/xiaolong/PycharmProjects/GetJpg/getblog.py
System default encoding: UTF-8
Html is encoding by : % {'confidence': 0.99, 'encoding': 'utf-8'}
一次研讨会上有学者让我谈谈中国外交的新特点,我说了三个词儿:大了,硬了,活了。王岐山访美,更像是一盘大棋,显示中美在包括反腐在内等涉及诸多敏感问题上的合作。有必要就此再聊下。
大了,很好理解,就是说以前的中国外交是外交部的外交,而现在外交和经济、军事、国家安全的联系更加紧密。外交部的外交,更重视双边外交系统的对接,而今各种事务交织在一起,格局需要够大才可以推进。比如说抓捕贪官的猎狐行动,这次王岐山访美肯定要细谈这方面的合作。这就是大外交,需要外交、司法系统携手,和国外相关机构达成合作,共同抓捕贪官归案。而国家安全委员会的构架,更是外交、内政协调的机构。
硬了,就是说更加敢作敢为。对日本,对菲律宾,果敢地亮出态度。尤其是日本,在世界范围内死磕,显示出近年来少有的意志。在维护国家利益方面,更是出手果断,向南苏丹派驻军队,显示出维护海外经济利益的决心。在联合国层面,态度更加坚决,敢于说不,敢于支持,不再是永远的弃权。
活了,就是不再拘泥于一些过时的原则,不再拘泥于是友是敌,而是根据实际情况,全方位发展和各国的友好关系。中国外交灵活的最明显例子就是对朝鲜。作为中国的同志加兄弟,朝鲜多年来对中国表现出不尊重的态度,中国新一届领导开始执政后,不访问朝鲜,而是访问韩国,大力发展和韩国的友好关系,这短期内可能让朝鲜不满,但长期看有利于中国在东北亚变局中的主导作用。
这三个特点是既成事实,不能简单说这样好还是不好。如果理性地分析就会发现,在外交的战略层面,中国依然有诸多模糊不清之处。
首先,在外交指导思想方面,是固守韬光养晦还是强调有所作为?这两者当然并不矛盾,但有所作为重点在哪些方面?是不是别给外界中国秀肌肉的感觉?这都需要通盘考虑。
其次,在外交具体行为方面,是继续恪守主权神圣不可侵犯原则,还是部分地认同人权高于主权?我想短期内中国不会改变,但有些具体案例,如伊拉克内乱给中国造成损失如何应对,确实需要行为准则方面给予指导。
第三,在大国关系方面,是和西方更加靠近,还是和俄罗斯抱团取暖,这非常关键。我一直认为,中国和俄罗斯无限度地靠近,将是中国的灾难。中国可以在美俄间平衡,但决不能无原则地支持俄罗斯。
总之,中国外交的新特点表明中国毫无疑问是外交大国,但还不是外交强国,在国际规则的确立、冲突调解方面还不是主导性力量。从外交大国到外交强国,还有很长的路要走。
欢迎关注、转发、评论。
Process finished with exit code 0
5.总结,对于python抓取网页提取其中的信息过程中出现乱码的问题,主要是由于字符串编码与系统默认的编码不一致,只要处理一致,一般不会出现什么问题。
---才开始学习python,感觉其库很强大,希望有兴趣的同学一起学习,希望能加入某个开源项目,在实践中得到学习的提升。