鱼C论坛

 找回密码
 立即注册
查看: 1027|回复: 9

为什么我爬下的网页是乱码?

[复制链接]
发表于 2019-4-3 16:52:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 xyzhu 于 2019-4-3 16:54 编辑

代码如下:
  1. import requests

  2. def get_page(url):
  3.     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER'}
  4.     res = requests.get(url, headers=headers)
  5.     return res

  6. def main():
  7.     url = 'https://www.2717.com/ent/meinvtupian/'
  8.     res = get_page(url)
  9.     with open('page_text.txt', 'w', encoding='utf-8') as file:
  10.         file.write(res.text)


  11. if __name__ == '__main__':
  12.     main()
复制代码


page_text.txt里的中文是乱码请问是哪的原因?
<a  title="&#198;&#230;&#206;&#197;òìê&#194;">&#198;&#230;&#206;&#197;òìê&#194;</a>
<a  title="&#191;&#214;2àí&#188;&#198;&#172;">&#191;&#214;2àí&#188;&#198;&#172;</a>
<a  title="&#206;′&#189;a&#214;&#174;&#195;&#213;">&#206;′&#189;a&#214;&#174;&#195;&#213;</a>
<a  title="&#198;&#230;&#206;&#197;í&#188;&#198;&#172;">&#198;&#230;&#206;&#197;í&#188;&#198;&#172;</a>
               
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-3 16:54:19 | 显示全部楼层
file.write(res.content.decode())
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-3 17:00:40 | 显示全部楼层
得看看你打开的URL是什么编码,你写入TXT直接给他指定了utf8,如果打开的URL并非UTF8写入的是utf8编码是没有转码的所以会乱码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-3 17:02:09 | 显示全部楼层
  1. res = requests.get(url, headers=headers)
  2.     return res.text
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-3 17:44:15 | 显示全部楼层
编码格式不一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-3 18:37:05 | 显示全部楼层
  1. with open('page_text.txt', 'w', encoding='utf-8') as file:
  2.         file.write(res.text)
复制代码

改成
  1. with open('page_text.txt', 'w', encoding='gbk') as file:
  2.         file.write(res.text)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-4 09:42:38 | 显示全部楼层

改后运行报错
    file.write(res.text)
UnicodeEncodeError: 'gbk' codec can't encode character '\xc3' in position 255: illegal multibyte sequence
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-4 09:48:03 | 显示全部楼层
幽梦三影 发表于 2019-4-3 16:54
file.write(res.content.decode())

运行和报错
    file.write(res.content.decode())
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 251: invalid continuation byte
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-4 09:55:48 | 显示全部楼层
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>&#195;à&#197;&#174;í&#188;&#198;&#172;_D&#212;&#184;D&#195;à&#197;&#174;_&#195;à&#197;&#174;D′&#213;&#230;_&#195;à&#197;&#174;&#213;&#213;&#198;&#172;_2717í&#188;&#198;&#172;′óè&#171;</title>

网页开头是这样的,我试了encoding = ‘gb2312’ 也不行不知道0xc3是什么鬼东西
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-4 11:00:50 | 显示全部楼层
本帖最后由 xyzhu 于 2019-4-4 11:02 编辑

解决了
百度了一下网页编码问题终于找到解决方法
  1. res.encoding = 'GBK'
  2. print(res.text)

  3. with open('girl_page_text.txt', 'w', encoding='GBK') as file:
  4.      file.write(res.text)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-15 00:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表