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

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

import requests
from requests.exceptions import RequestException

def get_one_page(url):
    try:
        response=requests.get(url)
        if response.status_code == 200:
            #print(response.text)
            print(response.encoding)
            print(response.apparent_encoding)
            r=response.text
            print(requests.utils.get_encodings_from_content(r)[0])
            a=r.encode(‘ISO-8859-1‘).decode(requests.utils.get_encodings_from_content(r)[0])
            print(a)
            print(‘------------------------------------‘)
            b = r.encode(‘ISO-8859-1‘).decode(response.apparent_encoding)
            print(b)
        return None
    except RequestException:
        return None

def main():
    url = ‘http://www.mh160.com/‘
    get_one_page(url)

if __name__==‘__main__‘:
        main()

看图!看图!看图!

原文地址:https://www.cnblogs.com/zhouxinfei/p/8502651.html

时间: 2024-11-06 12:03:19

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

JS传递中文参数出现乱码的解决办法

一.window.open() 乱码: JS中使用window.open("url?param="+paramvalue)传递参数出现乱码,提交的时候,客户端浏览器URL中显示参数是正确的, 但是传到了服务器端是是乱码.这种情况下需要在客户端对该参数进行编码,然后在服务器端解码即可. 1.JS客户端编码: var selStr=document.getElementsByName('selStr')[0].value; selStr=encodeURI(encodeURI(selStr

Python使用lxml模块和Requests模块抓取HTML页面的教程

Web抓取Web站点使用HTML描述,这意味着每个web页面是一个结构化的文档.有时从中 获取数据同时保持它的结构是有用的.web站点不总是以容易处理的格式, 如 csv 或者 json 提供它们的数据. 这正是web抓取出场的时机.Web抓取是使用计算机程序将web页面数据进行收集 并整理成所需格式,同时保存其结构的实践. lxml和Requestslxml(http://lxml.de/)是一个优美的扩展库,用来快速解析XML以及HTML文档 即使所处理的标签非常混乱.我们也将使用 Requ

DELPHI7调用BERLIN中间件的中文字段名乱码的解决办法

MSSQL数据库的表使用中文字段名,BERLIN开发的DATASNAP中间件,DELPHI7调用中间件的查询方法返回数据给CLIENTDATASET.DATA,发现中文字段名乱码,中文字段名的值可以正常显示. 怎么办? 发现在SQL语句中将中文字段名as 为英文字段名可以解决乱码的问题. select c1,字段名2 as c1 from t1 原因何在? BERLIN默认是使用UNICODE字符串的,BERLIN的CLIENTDATASET也是使用UNICODE字符串,而DELPHI7是ANS

在Python3解释器的交互界面下使用方向键产生乱码的解决办法

现象: 在python3的解释器交互界面使用方向键会产生类似: [d^[C之类的乱码. 原因: 未使能readline功能 解决办法: yum install -y readline-devel       //安装C的readline相关文件 make distclean     //清理之前安装过程中的相关信息 vim ./Moudules/Setup.dist             //编辑Python3源码目录中Modules下的Setup.dist文件 #readline readl

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 如果只

【转】Source Insight中文注释为乱码的解决办法

我网上查了一堆解决办法,但是都是2017年以前的,并且都是针对于source insight 3.5及以下版本的解决方案,软件版本都到4.0了,应该有新方法出现. 干货:Source Insight 4 的解决办法(source insight 3.5 及以下版本就到其他地方看看吧) [解决办法]: 单个文件乱码解决办法: 菜单栏中[File] > [Reload As Encoding...] > [Chinese Simplified (GB18030)] > 选择后,点击load,

scrapy抓取的页面中文会变成unicode字符串

不了解编码的,需要先补下:http://www.cnblogs.com/jiangtu/p/6245264.html 现象:从scrapy抓取的页面中文会变成unicode字符串,如下图 2017-03-28 23:00:12 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.lagou.com/jobs/2617468.html> {'describe': [u'<div>\n <p>\u5c97\u

Winform实现抓取web页面内容的方法

本文以一个非常简单的实例讲述了Winform实现抓取web页面内容的方法,代码简洁易懂,非常实用!分享给大家供大家参考. 具体实现代码如下: WebRequest request = WebRequest.Create("http://1.bjapp.sinaapp.com/play.php?a=" + PageUrl); WebResponse response = request.GetResponse(); Stream resStream = response.GetRespo

nutch2.1抓取中文网站

对nutch添加中文网站抓取功能. 1.中文网页抓取 A.调整mysql配置,避免存入mysql的中文出现乱码.修改 ${APACHE_NUTCH_HOME} /runtime/local/conf/gora.properties ############################### # MySQL properties            # ############################### gora.sqlstore.jdbc.driver=com.mysql.jd