requests库爬取页面出现乱码_使用requests库爬取出现乱码-程序员宅基地

技术标签: 爬虫  python  开发语言  

不知道为什么这段时间爬取页面总是会出现乱码,类似于下图:

一开始当然会以为是自己被反爬了,然后一个劲的往headers里塞东西,但是并没有什么卵用,直到后来发现可能是编码格式的问题,原代码:

import requests

url='http://www.baidu.com/'
headers={
    'user-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0',#不加的话就直接显示乱码了
    }
response=requests.get(url=url,headers=headers)
txt=response.text
with open('baidu.html','w',encoding='utf-8') as f:
    f.write(txt)

这个代码其实是可以的,但是并不是一直可以,比如爬某些没有限制的网站(我们学校官网)就依旧会显示出乱码,所以是‘utf-8’可能失效甚至是根本不是这个编码格式,所以改成:

import requests

url='http://www.baidu.com/'
headers={
    'user-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0',#不加的话就直接显示乱码了
    }
response=requests.get(url=url,headers=headers)
response.encoding = response.apparent_encoding
txt=response.text
with open('baidu.html','w',encoding=str(response.encoding)) as f:
    f.write(txt)

就可以了,但是有个地方不是蛮懂,为什么在单独打印出txt时可以正常显示,但是如果直接把txt写入到文件中就又不行了,所以我这里又强制限制了文件写入的编码格式,可是txt不是已经编码过了吗?所以这里我就不是很懂,希望有懂的大佬可以讲解一下

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kuyecsl/article/details/125025029

智能推荐

org.apache.ibatis.exceptions.PersistenceException: Error building SqlSession.The error may....-程序员宅基地

文章浏览阅读333次。这里写自定义目录标题**org.apache.ibatis.exceptions.PersistenceException:Error building SqlSession.The error may exist in SQL Mapper ConfigurationCause: org.apache.ibatis.builder.BuilderException: Error parsing ..._org.apache.ibatis.exceptions.persistenceexception: ### error querying databa

查看Ubuntu系统硬件配置命令_ubuntu查看系统配置命令-程序员宅基地

文章浏览阅读1.9w次,点赞2次,收藏42次。转载自:http://blog.csdn.net/kinglyjn/article/details/53584652?utm_source=itdadao&utm_medium=referral1. 查看内核/操作系统/CPU信息ubuntu@dbserver:~$ uname -aLinux dbserver 4.2.0-27-generic #32~14.04.1-Ubuntu_ubuntu查看系统配置命令

python+request实现疫情上报_python 数据上报-程序员宅基地

文章浏览阅读478次,点赞2次,收藏5次。python+request实现疫情上报1.准备工作2.代码构思2.1.摸清上报流程3.总结1.准备工作在windows环境下使用python3.9版本进行开发,需要在cmd控制台使用pip install request指令安装request模块。2.代码构思去年用selenium自动化测试的思想实现了自动打卡,但因为服务器性能有限,而且如果页面元素加载变慢会导致selenium捕获不到dom元素,无法实现模拟鼠标操作的功能,有失败的可能性,想同时为多人打卡也只能用windows自动的定时功能错开_python 数据上报

element-ui select选择器 显示层级z-index的大小_el-select z-index-程序员宅基地

文章浏览阅读3.7k次。在用vue2写一个添加商品的页面,其中用到了select下拉框和wangeditor编辑器,但是select下拉框被编辑器盖住了经过查看,是因为编辑器的z-index层级太高解决办法是给“el-select”的z-index 层级加高是我用:popper-append-to-body="false",将下拉框载在到里面的..._el-select z-index

势能分析_对某个数据结构执行一个具有n个运算的序列 势能方法-程序员宅基地

文章浏览阅读1.8k次。喜欢这篇文章吗?喜欢的话去看置顶博客,即可依据分类找到此文章的原版得到更好的体验_对某个数据结构执行一个具有n个运算的序列 势能方法

Android 画中画模式_android 退出picturemode-程序员宅基地

文章浏览阅读6.6k次。画中画支持Android 8.0(API 级别 26)允许以画中画模式启动 Activity。画中画是一种特殊类型的多窗口模式,最常用于视频播放。使用该模式,用户可以通过固定到屏幕一角的小窗口观看视频,同时在应用之间进行导航或浏览主屏幕上的内容。画中画利用 Android 7.0 中的多窗口模式 API 来提供固定的视频叠加窗口。要将画中画添加到您的应用中,您需要注册支持画中画的 Activi..._android 退出picturemode

随便推点

阿里云服务器如何快速搭建Docker环境_阿里云搭建docker-程序员宅基地

文章浏览阅读980次。本教程介绍如何使用阿里云服务器快速搭建Docker环境,并使用Docker部署一个Nginx服务。步骤一:安装Docker CEDocker有两个分支版本:Docker CE和Docker EE,即社区版和企业版。本教程基于CentOS 7安装Docker CE。1.安装Docker的依赖库。yum install -y yum-utils device-mapper-persistent-data lvm22.添加Docker CE的软件源信息。yum-config-m_阿里云搭建docker

Combinations Of Coins - Medium-程序员宅基地

文章浏览阅读132次。Given anumber of different denominations of coins (e.g., 1 cent, 5 cents, 10 cents, 25 cents), get all the possible ways to pay a target number of cents.Argumentscoins - an array of positive in..._consider n kinds of coins of denominations c1; c2; : : : ; cn and limited su

ubuntu16.04常用命令及安装各种软件_ubuntumate1604安装软件命令-程序员宅基地

文章浏览阅读7.7k次。常用命令:1.apach服务重启sudo /etc/init.d/apache2 restart2.tomcat开启关闭开启 sh ./startup.sh关闭 sh ./shutdown.sh3.查看ssh服务是否安装ps -e |grep ssh4.ssh服务重启sudo /etc/init.d/ssh restart_ubuntumate1604安装软件命令

2.4G功放芯片,支持国产-程序员宅基地

文章浏览阅读697次。Cb2402是一个完全集成的,单芯片,单独的前端集成电路。它集成了当今无线通信所需的所有射频功能。Cb2402结构将 pa,lna,发送和接收开关电路,相关匹配网络,以及谐波滤波器集成在一个 cmos 单片设备中。Cb2402适用于2.4 ghz 的802.11 b/g/n 应用程序。结合卓越的性能,高灵敏度和效率,低噪音,小型因素,低成本,cb2402是理想的解决方案,单天线应用,和理想的积木式应用。Cb2402具有简单的低电压 cmos 控制逻辑,并且需要最小的外部元件来实现系统。Pa 功率探测器电_2.4g功放芯片

在linux下使用wine安装source insight遇到的问题_wine安装source insight导不进-程序员宅基地

文章浏览阅读5.4k次。1、安装wine sudo apt-get install wine2、下载sourceInsight_wine安装source insight导不进

jQuery-$.ajax()发起GET/POST请求_$.ajax post skipvalidation-程序员宅基地

文章浏览阅读4.2k次。Ajax能让我们轻松实现网页与服务器之间的数据交互。Ajax的底层实现主要是用到浏览器中提供的XMLHttpRequest对象用法比较复杂,所以jQuery对XMLHttpRequest进行了封装提供了一系列Ajax相关的函数,极大降低了Ajax的使用难度。之前分享过了原生的Ajax发起GET和POST请求的写法以及使用jQuery封装后发起GET和POST请求的写法(查看可见文章底部直通车)。本文主要介绍使用jQuery封装后的Ajax可以使用$.ajax()直接发起GET和POST服务器请求。_$.ajax post skipvalidation

推荐文章

热门文章

相关标签