python中文乱码如何处理、如何处理跨域_python抓取中文网页乱码通用解决方法

我们经常通过python做采集网页数据的时候,会碰到一些乱码问题,今天给大家分享一个解决网页乱码,尤其是中文网页的通用方法。

首页我们需要安装chardet模块,这个可以通过easy_install 或者pip来安装。

安装完以后我们在控制台上导入模块,如果正常就可以。

比如我们遇到的一些ISO-8859-2也是可以通过下面的方法解决的。

直接上代码吧:

import urllib2

import sys

import chardet

req = urllib2.Request("http://www.163.com/")##这里可以换成http://www.baidu.com,http://www.sohu.com

content = urllib2.urlopen(req).read()

typeEncode = sys.getfilesystemencoding()##系统默认编码

infoencode = chardet.detect(content).get('encoding','utf-8')##通过第3方模块来自动提取网页的编码

html = content.decode(infoencode,'ignore').encode(typeEncode)##先转换成unicode编码,然后转换系统编码输出

print html

通过上面的代码,相信能够解决你采集乱码的问题。

接着开始学习网络爬虫的深入点儿的东东:

30201407-bf5a70d3d4bb4c64b9e2cec87974b8ac.png

我用的是Chrome浏览器(firefox也行),打开上述网页,鼠标右击,选择审查元素,就会出现下面所示

30201645-9eb77c829ddb435288813c38fc4468c7.png

首先我们来实现抓取第一篇文章“一次告别”的page的url

按住ctrl+f就会在上图左下角打开搜索栏,输入”一次告别“,就会自动定位到html源码所在位置,如上高亮显示的地方

接下来我们就是要把对应的url:http://blog.sina.com.cn/s/blog_4701280b0102ek51.html提取出来

详细实现代码如下:

ContractedBlock.gif

ExpandedBlockStart.gif

1 #coding:utf-8

2 importurllib3 str0 = '一次告别'

4 title = str0.find(r'

14 filename = url[-26:]15 printfilename16 open(filename, 'w').write(content)

catchBlog.py

下面对代码进行解释:

首先利用find函数开始依次匹配查找'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值