Python抓取中文网页出现乱码

转自http://www.oschina.net/code/snippet_1448389_33526

原来是有的时候网站将网页用gzip压缩了

 1 """
 2 迪艾姆公司python远程培训班 黄哥所写
 3 python远程视频培训班 周末班
 4 迪艾姆python培训周末班北京3月8、上海3月9日上课欢迎报名参加。
 5 http://www.010dm.com/xflml/3089.html
 6 回答贴吧上一个同学用python3访问sina首页中文的处理
 7
 8 如果只用普通的
 9 import urllib.request
10 html = urllib.request.urlopen("http://www.sina.com").read()
11 print(html.decode(‘gbk‘))
12
13 出现下面的错误
14 builtins.UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x8b in position 1: illegal multibyte sequence
15
16 怎么办?原来是有的网站将网页用gzip压缩了 。
17 请看下面的代码
18
19 建议大家用python2
20 import urllib2
21 from StringIO import StringIO
22 import gzip
23
24 request = urllib2.Request(‘http://www.sina.com‘)
25 request.add_header(‘Accept-encoding‘, ‘gzip‘)
26 response = urllib2.urlopen(request)
27 if response.info().get(‘Content-Encoding‘) == ‘gzip‘:
28     buf = StringIO( response.read())
29     f = gzip.GzipFile(fileobj=buf)
30     data = f.read()
31 print data.decode("GBK").encode(‘utf-8‘)
32 """
33
34 import io
35 import urllib.request as r
36 import gzip
37 req = r.Request("http://www.sina.com", headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36", "Accept-Encoding": "gzip"})
38 bs = r.urlopen(req).read()
39 bi = io.BytesIO(bs)
40 gf = gzip.GzipFile(fileobj=bi, mode="rb")
41 print(gf.read().decode("gbk"))
时间: 2024-08-04 13:52:16

Python抓取中文网页出现乱码的相关文章

python抓取中文网页乱码通用解决方法

我们经常通过python做采集网页数据的时候,会碰到一些乱码问题,今天给大家分享一个解决网页乱码,尤其是中文网页的通用方法. 首页我们需要安装chardet模块,这个可以通过easy_install 或者pip来安装. 安装完以后我们在控制台上导入模块,如果正常就可以. 比如我们遇到的一些ISO-8859-2也是可以通过下面的方法解决的. 直接上代码吧: import urllib2import sysimport chardet req = urllib2.Request("http://ww

Python抓取HTML网页并以PDF保存

一.前言 今天介绍将HTML网页抓取下来,然后以PDF保存,废话不多说直接进入教程. 今天的例子以廖雪峰老师的Python教程网站为例:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 二.准备工作 PyPDF2的安装使用(用来合并PDF): PyPDF2版本:1.25.1 https://pypi.python.org/pypi/PyPDF2/1.25.1 或 https://g

python(二):用python抓取指定网页

1.抓取网页的内容 urlopen(url)函数:这个函数返回一个 http.client.HTTPResponse 对象, 这个对象又有各种方法 #coding=utf-8import urllib.request url="http://www.baidu.com/"data=urllib.request.urlopen(url)read_data=data.read()info_data=data.info()getcode_data=data.getcode() print(r

Python抓取单个网页中所有的PDF文档

Github博文地址,此处更新可能不是很及时. 1.背景 最近发现算法以及数据结构落下了不少(其实还是大学没怎么好好学,囧rz),考虑到最近的项目结构越来越复杂了,用它来练练思路,就打算复习下数据结构与算法.结合最近在学英语,然后干脆就用英文喽.然后选定一本参考书籍<Data Structures and Algorithms in Java>.刚开始看还是蛮吃力的,慢慢来.由于之前有翻录书籍附录的习惯,于是就去书籍附带的官网看了下,发现http://ww0.java4.datastructu

Python3的requests类抓取中文页面出现乱码的解决办法

这种乱码现象基本上都是编码造成的,我们要转到我们想要的编码,先po一个知识点,嵩天老师在Python网络爬虫与信息提取说到过的:response.encoding是指从HTTP的header中猜测的响应内容编码方式,如果header中不存在charset,则默认编码为ISO-8859-1 ,这样一来某些不规范的服务器返回就必然乱码了:response.apparent_encoding是指从内容中分析出的响应内容编码方式.requests内部的 utils 也提供了一个从返回 body 获取页面

Python抓取网页&amp;批量下载文件方法初探(正则表达式+BeautifulSoup) (转)

Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup) 最近两周都在学习Python抓取网页方法,任务是批量下载网站上的文件.对于一个刚刚入门python的人来说,在很多细节上都有需要注意的地方,以下就分享一下我在初学python过程中遇到的问题及解决方法. 一.用Python抓取网页 基本方法: [python] view plaincopyprint? import urllib2,urllib url = 'http://www.baidu.com' req 

[python]乱码:python抓取脚本

参考: http://www.zhxl.me/1409.html 使用 python urllib2 抓取网页时出现乱码的解决方案 发表回复 这里记录的是一个门外汉解决使用 urllib2 抓取网页时遇到乱码.崩溃.求助.解决和涨经验的过程.这类问题,事后看来只是个极小极小的坑,不过竟然花去很多时间,也值得记录一下.过程如下: 目标: 抓取 http://sports.sina.com.cn/g/premierleague/index.shtml 代码: 1 2 3 4 5 6 # coding

Python抓取页面乱码问题的解决

import urllib2 response=urllib2.urlopen('http://house.focus.cn/') html=response.read() print html.decode('gbk') Python抓取页面乱码问题的解决,布布扣,bubuko.com

Python抓取需要cookie的网页

Python抓取需要cookie的网页 在仿照<Python小练习:可视化人人好友关系>一文时,需要登录模拟登录人人网.然而自从CSDN事件之后,人人网开始使用加密方式处理登录名和密码,直接使用post方式已经无法登陆人人网.这时,从豆瓣讨论中找到了解决方法: 1. 首先使用浏览器登陆人人,然后找到浏览器中关于登陆的Cookie: 2. 将Cookie记录下来,在Python中使用cookie模块模拟浏览器的行为: 3. 取得并解析数据. 1. HTTP协议与Cookie 抓取网页的过程跟浏览