爬虫网页编码问题解决思路

用python抓取网页,很容易遇到例如:‘utf8‘ codec can‘t decode byte 0xc5 类似的编码的问题。

这里提供几种排查思路:

  1. 可以先查看你的Linux系统是不是UTF-8。如果不是的话可以修改:

    echo $LANG

    export LANG=en_US.UTF8

  2. 首先python2默认所有编码统一是unicode,因此你可以在代码前面加入
    #-*-coding:utf-8 -*-
  3. 网页的编码可能为gbk,可以把gbk先decode,在统一encode为utf-8。
    response = response.decode(‘gbk‘,‘ignore‘).encode(‘utf-8‘)
  4. 也可以利用import chardet先做判断
    encoding_dict = chardet.detect(response)
    web_encoding = encoding_dict[‘encoding‘]
    if web_encoding == ‘utf-8‘ or web_encoding == ‘UTF-8‘:
      html = response
    else :
       html = response.decode(‘gbk‘,‘ignore‘).encode(‘utf-8‘)

我遇到的问题就解决了,如果有其他情况,我会继续补充,欢迎指正

				
时间: 2024-10-17 03:21:17

爬虫网页编码问题解决思路的相关文章

Apache以及PHP的默认编码问题解决(详解)

如果你在网上搜索 “apache配置”,搜到的页面大多都会建议你在httpd.conf中加上这么一句:AddDefaultCharset GB2312.对于新手而且是只用GB2312编码的开发人来说,这么做是ok的.但是如果要想使用UTF-8字符集的话,比如 在test.php文件中需要有 meta http-equiv="Content-Type" content="text/html; charset=UTF-8" 这段代码.这时你再打开浏览器访问test.ph

解决新版chrome无法设置网页编码的问题

chrome55以后 就移除了设置网页编码的功能,这时我们可以去chrome应用商店 搜索Set Character Encoding 这个扩展插件,安装后右键单击网页即可选择网页编码,如下图所示 另外再推荐一个前端用的chrome扩展插件 叫FE助手,里面有一些实用的功能.

网页编码就是那点事

编码一直是让新手头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚.但是编码又是那么重要,特别在网页这一块.如果你打出来的不是乱码,而网页中出现了乱码,绝大部分原因就出在了编码上了.此外除了乱码之外,还会出现一些其他问题(例如:IE6 的 CSS 加载问题)等等.我写本文的目的,就是要彻底解释清楚这个编码问题!如果你遇到了类似的问题,那就要仔细的看看这篇文章. ANSI.GBK.GB2312.UTF-8.GB1803

html网页编码问题

之前碰到过一些html编码乱码问题,都理解的模模糊糊,问了别人解释的也是模模糊糊.近期要做前端这个问题研究了下仅仅须要两句话就能非常清楚的解释了(之前问的那些人是不是自己都没理解非常郁闷.) <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> 这段写在head中告诉浏览器用那种编码方式,浏览器就会自己主动选择相应的编码方式显示网页. 然后在保存这个html文件时选择编码方

[Python网络编程]gevent httpclient以及网页编码

之前看到geventhttpclient这个项目,https://github.com/gwik/geventhttpclient,官方文档说非常快,由于响应使用了C的解析,所以我一直想把这玩意用到项目中, 这两天一直在纠结这玩意,说实在一句话,比较难用,封装的不给力,最大缺陷如下: 1.不支持重定向,重定向需要自己来写,很费事 2.新建的httpclient对象只能发送同域名的请求 这相当的蛋疼,我花了一点时间封装了一下,解决了上面的两个问题,还增加了自动编解码问题,代码如下: #!/usr/

浏览器正确理解和使用GBK及UTF-8(UTF-8 + BOM)网页编码

网页编码英文译为web page encoding,是在网页中指定其特定的字符编码格式的库. GBK是国家标准GB2312基础上扩容后兼容GB2312的标准.GBK的文字编码是用双字节来表示的,即不论中.英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1.GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大. UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM.是用以解决国际上字符的一种

网页编码乱码

1.将gbk转化成utf-8 asp <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>网页头部加上 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">网页meta加上 2.php header("Content-Type:text/html; charset=utf-8&quo

[转]网页编码就是那点事

网页编码就是那点事 编码一直是让新手头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚.但是编码又是那么重要,特别在网页这一块.如果你打出来的不是乱码,而网页中出现了乱码,绝大部分原因就出在了编码上了.此外除了乱码之外,还会出现一些其他问题(例如:IE6 的 CSS 加载问题)等等.潜行者m 写出本文的目的,就是要彻底解释清楚这个编码问题!如果你遇到了类似的问题,那就要仔细的看看这篇文章. ANSI.GBK.GB23

spider JAVA如何判断网页编码 (转载)

原文链接 http://www.cnblogs.com/nanxin/archive/2013/03/27/2984320.html 前言 最近做一个搜索项目,需要爬取很多网站获取需要的信息.在爬取网页的时候,需要获得该网页的编码,不然的话会发现爬取下来的网页有很多都是乱码. 分析 一般情况下,网页头信息会指定编码,可以解析header或者meta获得charset.但有时网页并没没有指定编码,这时就需要通过网页内容检测编码格式,通过调研,最好用的还是cpdetector. cpdetector