Python3.6+requests 爬取网站遇到中文乱码怎么办?作者:微软亚洲研究院

本文介绍了解决Python爬虫中网页内容编码问题的方法,通过更改response.content为response.text来确保正确解析文本数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- coding:utf-8 -*-
import requests
import json
import time
import random
from lxml import etree


url = 'https://www.msra.cn/zh-cn/news/features/bma-20170207'
# 伪装成Mozilla浏览器,解决反爬虫
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
# 生成属性字典
headers = {'User-Agent': user_agent}
# 获取目标网站的HTML页面
response = requests.get(url, headers=headers)
# print(response.text)
a = response.content
selector = etree.HTML(a)
print(selector)
这是结果

Connected to pydev debugger (build 181.4445.76)
<Element html at 0x2492bb71248>
å¾®è½¯äºæ´²ç ç©¶é¢
茅娄聳茅隆碌
ä½èï¼å¾®è½¯äºæ´²ç ç©¶é¢ 

之前使用python2.7遇到许多这样的编码问题,本以为转战3版本就不会遇见了。今天遇到的这个问题,找了挺久资料,终于找到解决方案:

把  response.content  改成  response.text  ,这样问题就解决了。

原理:

resp.text返回的是Unicode型的数据。
resp.content返回的是bytes型也就是二进制的数据

因此如果我们想读取解析文本数据时,使用的是response.text。而想读取解析图片文件,往往使用的就是response.content

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值