- 53
- 0
GET 请求 B 站首页,返回的数据有时能正常解码为 UTF8,有时又会解码到一半报错提示无法解码,报错时我试着先把字节存到一个文件,然后用 UTF8 可以正常解码前面的部分。 (代码手动跑个 5、6 遍,应该跟反爬虫没关联吧)。访问豆瓣 TOP250 电影( https://movie.douban.com/top250 )页面也会出现这个情况,豆瓣触发次数得跑多几遍,而且是固定位置报错,这个感觉很诡异,固定位置也不可能是传输数据丢了吧?这个问题困扰了我好几天了,望各位不吝赐教。
代码如下:
import socket, ssl
HOST = 'www.bilibili.com'
sock = socket.socket()
sock = ssl.wrap_socket(sock)
sock.connect((HOST, 443))
request = f'GET / HTTP/1.1\r\nHOST: {HOST}\r\nConnection: close\r\n\r\n'
sock.send(request.encode())
SIZE = 8192
buffer = []
while True:
data = sock.recv(SIZE)
if not data:
break
buffer.append(data)
data = b''.join(buffer)
sock.close()
data = data.split(b'\r\n\r\n', 1)[1]
print(data.decode())
提供下获取的字节文件: https://pan.baidu.com/s/17Abe... 提取码: 8ku1
报错位置在 34556,试解码前 30000 没问题。
贴下 header 部分:
HTTP/1.1 200 OK
Date: Sat, 14 Sep 2019 11:18:13 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
gear: 1
vikingrCache: 60000
Vikingr-Cache-TTL: 4376
IDC: shjd
Vary: Origin,Accept-Encoding
Expires: Sat, 14 Sep 2019 11:18:43 GMT
Cache-Control: max-age=30
X-Cache-Webcdn: BYPASS from hw-gz3-webcdn-07
- 共 0 条
- 全部回答
-
此生不换的執著 普通会员 1楼
乱码问题可能是由于以下几个原因造成的:
- B 站的编码设置问题:你可能需要确保 B 站的编码设置是正确的。在命令行中,你可以使用
chardet库来检测编码。例如,如果你的 B 站的编码是 UTF-8,你可以使用以下命令:
python -c "import chardet; print(chardet.detect('你好世界'.encode('utf-8')).encoding)"如果你的 B 站的编码设置不正确,你可能会得到乱码。请确保你的 B 站的编码设置是正确的。
- B 站的响应内容问题:如果 B 站的响应内容是乱码,你可能需要将响应内容转换为正确的编码。例如,如果你的 B 站的响应内容是
你好世界,你可以使用以下命令:
python -c "import urllib.request; response = urllib.request.urlopen('http://www.bilibili.com'); print(response.read().decode('utf-8'))如果你的 B 站的响应内容是乱码,你可能需要将响应内容转换为正确的编码。请确保你的 B 站的响应内容是正确的。
-
B 站的网络问题:如果你的网络连接不稳定或者带宽不足,你可能会得到乱码。请确保你的网络连接稳定并且带宽足够。
-
Python 问题:如果你的 Python 版本过低,你可能无法正确处理某些编码。请确保你的 Python 版本至少是 3.6。
- B 站的编码设置问题:你可能需要确保 B 站的编码设置是正确的。在命令行中,你可以使用
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
