出现乱码的原因是,网页服务端有bug,它硬性使用使用某种特定的编码方案,而并没有按照客户端的请求头的编码要求来发送编码。

解决方案:使用chardet来猜测网页编码。

1.去chardet官网下载chardet的py源码包。

2.把chardet目录从源码包里解压到项目文件夹内。

3.通过 import chardet 来引用它,然后:

response = None

#尝试下载网页

try:

response = urllib2.urlopen("http://www.baidu.com")

except Exception as e:

print "错误:下载网页时遇到问题:" + str(e)

return

if response.code != 200:

print "错误:访问后,返回的状态代码(Code)并不是预期值【200】,而是【" + str(response.code) + "】"

return

if response.msg != "OK":

print "错误:访问后,返回的状态消息并不是预期值【OK】,而是【" + response.msg + "】"

return

#读取html代码

htmlCode = None

try:

htmlCode = response.read()

except Exception as e:

print "错误:下载完毕后,从响应流里读出网页代码时遇到问题:" + str(e)

return

#处理网页编码

htmlCode_encode = None

try:

#猜编码类型

htmlCharsetGuess = chardet.detect(htmlCode)

htmlCharsetEncoding = htmlCharsetGuess["encoding"]

#解码

htmlCode_decode = htmlCode.decode(htmlCharsetEncoding)

#获取系统编码

currentSystemEncoding = sys.getfilesystemencoding()

#按系统编码,再进行编码。

'''

做这一步的目的是,让编码出来的东西,可以在python中进行处理

比如:

key = "你好"

str = "xxxx你好yyyy"

keyPos = str.find( key )

如果不做再编码,这一步就可能会报错出问题

'''

htmlCode_encode = htmlCode_decode.encode(currentSystemEncoding)

except Exception as e:

print "错误:在处理网页编码时遇到问题:" + str(e)

return

#htmlCode_encode即为所求

return htmlCode_encode

【真相揭秘】requests获取网页编码乱码本质

有没有被网页编码抓狂,怎么转都是乱码. 通过查看requests源代码,才发现是库本身历史原因造成的. 作者是严格http协议标准写这个库的,里第16章国际化里提到,如 ...

node爬虫之gbk网页中文乱码解决方案

之前在用 node 做爬虫时碰到的中文乱码问题一直没有解决,今天整理下备忘.(PS:网上一些解决方案都已经不行了) 中文乱码具体是指用 node 请求 gbk 编码的网页,无法正确获取网页中的中文(需 ...

Python获取网页Html文本

Python爬虫基础 1.获取网页文本 通过urllib2包,根据url获取网页的html文本内容并返回 #coding:utf-8 import requests, json, time, re, ...

python使用urllib2抓取网页

1.使用python的库urllib2,用到urlopen和Request方法. 2.方法urlopen原形 urllib2.urlopen(url[, data][, timeout]) 其中: u ...

Python获取网页指定内容(BeautifulSoup工具的使用方法)

Python用做数据处理还是相当不错的,如果你想要做爬虫,Python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能,此文中所有的功能都是基于BeautifulSoup这个包. ...

Python爬虫学习——获取网页

通过GET请求获取返回的网页,其中加入了User-agent信息,不然会抛出"HTTP Error 403: Forbidden"异常, 因为有些网站为了防止这种没有User-ag ...

有关利用python获取网页, 以及KDD近几年论文标题与摘要链接

最近一直在看KDD的论文,不过,由于老师并没有什么合理的方向性,所以考虑把kdd中的大部分内容都利用python将所有标题.摘要获取下来. 还有一个原因在于,看acm上的摘要,都只显示了两行,再看多点 ...

Python爬虫学习之获取网页源码

偶然的机会,在知乎上看到一个有关爬虫的话题,因为强烈的好奇心和觉得会写爬虫是一件高大上的事情,所以就对爬虫产生了兴趣. 关于网络爬虫的定义 ...

Python: PySide(Qt)异步获取网页源码

学习PyQt UI编程笔记.相对PyQt来说,PySide资料为少. 此篇记录异步获取代码后,同步显示于界面窗体中,涉及线程网步,此为知识点. 直录代码: # encoding: utf-8 from ...

随机推荐

Java注解详解

Java1.5引入了注解,注解作为程序的元数据嵌入到程序中.注解可以被一些解析工具或者编译工具进行解析.我们也可以声明注解在编译过程或者执行时产生作用. 创建Java自定义注解: package co ...

Tornado实战项目(伪JD商城)

预备知识 在之前tornado商城项目中,在开始之前需要引入一些项目设计知识,如接口,抽象方法抽象类,组合,程序设计原则等,个人理解项目的合理设计可增加其灵活性, 降低数据之间的耦合性,提高稳定性,下 ...

JMS发布/订阅消息传送例子

前言 基于上篇文章"基于Tomcat + JNDI + ActiveMQ实现JMS的点对点消息传送"很容易就可以编写一个发布/订阅消息传送例子,相关环境准备与该篇文章基本类似,主要 ...

基本概率分布Basic Concept of Probability Distributions 4: Negative Binomial Distribution

PDF version PMF Suppose there is a sequence of independent Bernoulli trials, each trial having two p ...

eclipse 工作环境配置

1.更换编辑颜色, http://eclipse-color-theme.github.io/update/ 下载离线安装包,解压缩 eclipse-color-theme-update-site\u ...

java并行调度框架封装及演示样例

參考资料:  阿里巴巴开源项目 CobarClient  源代码实现. 分享作者:闫建忠 分享时间:2014年5月7日 ---------------------------------------- ...

Linux企业级项目实践之网络爬虫(9)——通过URL抓取网页内容

基本URL包含模式(或称协议).服务器名称(或IP地址).路径和文件名,如"协议://授权/路径?查询".完整的.带有授权部分的普通统一资源标志符语法看上去如下:协议://用户名: ...

evernote

evernote hebinn@163.com How to get Note Link Right Click Note & Copy Note Link Open Note : Note- ...

python 将验证码保存到本地 读取 写入

#验证码 #读取验证码网址.打开本地路径.写入.输入验证码 downpicture = urllib.request.urlopen(SecretCodeUrl).read() local = ope ...

用python帮朋友刷帖

0x0前言: 答应了一个朋友帮他刷贴,自己用python写了一个脚本刷. 虽然行为不好..但是缺钱用... 0x01准备: splinter模块: chrome浏览器驱动 0x02开始: 1.进入百度 ...

python urlopen 乱码_Python 2.7.3 urllib2.urlopen 获取网页出现乱码解决方案相关推荐

  1. 【转】解决XMLHTTP获取网页中文乱码问题

    这个问题困惑我很久了,以前总是要让用户自己根据网页编码来选择UTF-8还是GB2312 . 今天遇到一个读取文件乱码,突然想起了以前用XMLHTTP获取网页源代码乱码问题,嘿嘿~一同解决了.    跟 ...

  2. python import出错_Python ImportError: cannot import name urlopen错误分析

    在学习python的socket编程过程中遇到一个错误,错误的提示信息如下: ImportError: cannot import name urlopen,出现该问题的原因,主要是因为我的目录下有一 ...

  3. python find(urlopen.read())_Python小白必看之urlopen()详解

    一.  简介 urllib.request.urlopen()函数用于实现对目标url的访问. 函数原型如下:urllib.request.urlopen(url, data=None, [timeo ...

  4. python urlretrieve 管道_Python基础之 urllib模块urlopen()与urlretrieve()的使用方法详解。...

    1.urlopen()方法urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据. 参数 ...

  5. python重复执行_python flask schedule重复运行 任务被重复执行问题 解决方案

    [注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!] 注意注意注意,先暂时抛开任务不谈!看下面的代码,这样有助于你快速定位你的问题点: #!/usr/bin/env pyt ...

  6. python history函数_python的history_n 和history函数 获取的成交量和持仓量出现翻倍

    使用的最新的掘金者3.用python sdk调用 history_n 和history函数获取日k线,出现有的活约交易日的成交量和持仓量翻倍了,有的日期又是正确的. 比如 动力煤 ZC2001 对应代 ...

  7. python股票数据分析_Python股票分析(一)获取历史数据

    股票分析最重要的是获取历史数据,现在网上各种数据接口层出不穷,最近发现一个免费好用的接口,和大家分享一下. 证券宝(网址www.baostock.com)是一个免费.开源的证券数据平台,最重要的是:无 ...

  8. python爬取网页有乱码怎么解决_python - 爬虫获取网站数据,出现乱码怎么解决。...

    问 题 #!/usr/bin/python # -*- coding: utf-8 -*- import urllib2 import re import HTMLParser class WALLS ...

  9. 使用 python urllib2 抓取网页时出现乱码的解决方案

    这里记录的是一个门外汉解决使用 urllib2 抓取网页时遇到乱码.崩溃.求助.解决和涨经验的过程.这类问题,事后看来只是个极小极小的坑,不过竟然花去很多时间,也值得记录一下.过程如下: 目标: 抓取 ...

最新文章

  1. 预告|第四届工业大数据创新竞赛决赛答辩倒计时
  2. 在微信小程序上,帮助中心界面实现类似手风琴案例
  3. 本周Github精选 | 这12个最新AI开源项目,你一定要收下
  4. Android NFC开发-实践篇
  5. java mapreduce_通过简单的Word Count讲解MapReduce原理以及Java实现
  6. 找不到FLANNConfig.cmake文件
  7. 七、Linux常用命令——网络通信命令、系统关机命令
  8. 【图像去噪】基于matlab小波域双重局部维娜滤板图像去噪【含Matlab源码 1642期】
  9. Nexus5 破解电信关键步骤
  10. 【原创】《管理的实践》阅读有感
  11. 程序员删库跑路案例之 —— 这家网站首页变图片
  12. 函数连续、可导、可微、连续可微
  13. border定义不同边框,虚线边框(dashed,dotted),实线边框(solid)
  14. 知识产权代理行业公司竞争分析
  15. 三款好用的语音转文字软件,你知道几个?
  16. springboot的jsp应该放在哪_SpringBoot 在项目中使用JSP
  17. 2023年软考报哪门比较好?
  18. FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation
  19. Python中字符串的操作(图文详情)
  20. 这5个“减压”小妙招,在你负重前行的路上会用到!

热门文章

  1. 如何更好的管理局域网计算机,如何管理局域网所有计算机
  2. MSYQL中系统找不到指定的路径的解决方法
  3. html向上弹出效果,JQ特效之:页面向上滚动时弹出模块
  4. 一年java工作经验的面试题总结(持续更新中)
  5. Leapin' Lizards 【HDU - 2732】【最大流】
  6. mongodump和mongorestore实战
  7. slightphp框架
  8. linux sftp ipv6,linux 搭建ipv6服务器搭建
  9. Oracle-記一下使用full join的坑
  10. 数学的观点:向量空间和仿射空间(转)