在pycharm中抓取网页URL中文乱码解决方案

Python 2.7
IDE Pycharm 5.0.3


刚开始学python,学到抓取网页URL的时候,按照书本教材,采用urllib2来抓取网页,但是遇到中文字符时候显示乱码。如果把编码格式全部默认,则会导致中文字符注释不同通过,中文打印出现问题。这里暂且说一下解决方案。
在文件开头加入这句话

# -*- coding: utf-8 -*-

这是保证你注释中文的时候,和打印中文的时候能正常显示的前提。
当然,设置在这里。如图所示这里写图片描述
测试程序

# -*- coding: utf-8 -*-

print("这是一个测试程序test")#中文注释
import urllib2
req = urllib2.Request('http://www.csdn.com')
response = urllib2.urlopen(req)
the_page = response.read()
print the_page

这里写图片描述

可以看出,中文打印和注释都没有问题,网页抓取也没有问题。再测试一个网页

这里写图片描述

ok,优酷也正常
然后测试网易(搜狐同样出错)

这里写图片描述

出现乱码了,解决方法如下:

这里写图片描述

修改完后测试,网页中文正常,但是,中文print乱码
修改print代码:

print(u'这是一个测试程序test')#中文注释

这样就可以正常显示网页中文和print中文;

这里写图片描述

那之后重新测试csdn呢,结果肯定乱码啦,没办法,编码方式不同。

这里写图片描述

测试搜狐(和网易是一个编码方式吧)所以显示正常

这里写图片描述

然而,最后的百度,我用urllib2无论怎么改编码格式,都抓不到,全是乱码:

这里写图片描述

有种取巧的方法,采用如下编码:

import requests
url="http://www.baidu.com"
html = requests.get(url)
print html.text

7.28补充
可以采用urllib2+BeautifulSoup的方法来抓百度的网页,中文正常显示

from bs4 import BeautifulSoup
import urllib2
url='http://www.baidu.com'
html_url = urllib2.urlopen(urllib2.Request(url))
bs_url = BeautifulSoup(html_url.read(),'lxml')
print bs_url.prettify()

虽然可以抓到网页,也没有乱码,但这个requests对其他网页貌似不是很友好,而且又要换编码格式,我的天(掩面哭),不然它就这样:

这里写图片描述

改成utf-8后就可以正常显示了;

小弟刚接触Python,发现些问题,只有自己摸索答案,网上的基本都看了,但是就是没有针对这款Pycharm的解决方案,斗胆放上解决策略,以后若有长进,再回来修改。
请大家不吝赐教。
6.15更新,其实只要在后面跟上decode(‘gbk’)就可以了,简单转换乱码。。。。果然我还是太幼稚了,哈哈

import urllib2
req = urllib2.Request('http://www.163.com')
response = urllib2.urlopen(req)
the_page = response.read().decode('gbk')
print the_page
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值