Python抓取gb2312字符集网页中文乱码

本文详细介绍了在使用Python抓取包含GB2312编码网页时遇到中文乱码问题的解决方案。通过重新设置网页编码方式,成功解决了乱码问题,并分享了在编码转换过程中的注意事项。

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

最近在学习Python,练习用Python抓取网页内容并解析,在解析gb2312字符集网页时出现中文乱码:
UnicodeEncodeError: 'gbk' codec can't encode character u'\xbb' in position 0: illegal multibyte sequence

网上找了一大推,长篇大论啰嗦了半天都不知道在讲什么,原来Python程序员的表达能力这么差。
后来找到一个解决方案,参考:


也就是用网页中的字符编码方式重新编码一次即可:
# 使用requests库封装一个简单的通过get方式获取网页源码的函数
def getsource(url):
html = requests.get(url)
s =
html.text.encode(html.encoding)
# print s
return s
 
 当然 
 # coding: utf-8 
 也是要加的。

使用 Python 自动获取网页源代码是一种常见且高效的网络爬虫技术,能够快速抓取和处理大量网页数据。在实际操作中,`requests` 是一个非常流行且易于使用的第三方库,它简化了 HTTP 请求的发送和响应的处理。 ### 使用 `requests` 获取网页源代码 最基础的方式是通过发送 GET 请求来获取目标网站的内容: ```python import requests # 发送GET请求并获取网页源代码 url = 'https://www.baidu.com' response = requests.get(url) source_code = response.text # 获取文本内容(可能需要处理编码) ``` 如果出现乱码问题,通常是因为服务器返回的数据使用了特定的字符集,而 `requests` 默认采用 `ISO-8859-1` 编码进行解码[^2]。可以通过以下方法解决乱码问题: ```python # 查看当前编码方式 print(response.encoding) # 手动指定正确的编码方式,例如 UTF-8 response.encoding = 'utf-8' source_code = response.text ``` 此外,也可以直接访问二进制内容并通过其他方式解码: ```python binary_content = response.content # 获取原始字节流 decoded_content = binary_content.decode('utf-8') # 使用正确编码手动解码 ``` ### 将网页源代码保存至本地文件 为了持久化存储获取到的网页内容,可以将结果写入本地文件系统: ```python with open('webpage_source.html', 'w', encoding='utf-8') as file: file.write(source_code) ``` 这段代码会创建或覆盖名为 `webpage_source.html` 的文件,并将经过正确解码后的网页源代码写入其中。 ### 处理更复杂的场景 对于需要进一步解析 HTML 内容的情况,推荐结合使用 `BeautifulSoup` 库来进行结构化分析: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(source_code, 'html.parser') # 示例:提取所有链接 for link in soup.find_all('a'): print(link.get('href')) ``` 这种方法可以帮助开发者从页面中提取特定信息,而不是仅仅获取整个文档。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

asmcvc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值