遇到一个奇怪的爬虫乱码问题,求助一下

2023-05-06 17:31:46 +08:00
 pretty66

目标网站:https://zozo.jp/welcome/default.html

当我把这个链接放到浏览器访问时,数据展示一切正常;如果我用 postman 或者程序访问这个链接就会出现乱码,请求头设置和浏览器抓包的请求头一样 还是乱码。测试了半天没找到问题,感觉很奇怪;发出来给大伙看看,有没有清楚这是什么问题导致的,服务端有办法检测我不是浏览器吗😳

1177 次点击
所在节点    程序员
11 条回复
aeron
2023-05-06 17:34:05 +08:00
有反爬吧,检测是不是浏览器有很多方法的,不止请求头
encro
2023-05-06 17:40:58 +08:00
<meta charset="Shift_JIS">
你的爬虫的编码格式和它不一致。
rookie4show
2023-05-06 17:43:22 +08:00
f12 看了下,直接返回的就是乱码的,然后有几个 js 执行了,可能是替换内容的
pretty66
2023-05-06 17:45:13 +08:00
@rookie4show 浏览器请求 F12 看不是乱码啊,我用浏览器把 js 禁用后浏览器发起请求后依然正常的
pretty66
2023-05-06 17:46:26 +08:00
@encro 啥意思,有办法能解决乱码问题吗;我搜了下 Shift_JIS 这个编码 没找到啥有用的信息😞
NoOneNoBody
2023-05-06 17:48:09 +08:00
1. shift-jis
2. 见到好几个 js 都运行了 eval ,估计是需要客户端渲染
sunshijie
2023-05-06 17:51:22 +08:00
import requests


headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
}

response = requests.get('https://zozo.jp/welcome/default.html', headers=headers)
res = response.content.decode("Shift_JIS")
print(res)
试了下好像没什么问题
encro
2023-05-06 17:52:30 +08:00
得看你用什么爬虫,将编码进行转码。
再不行就上 puppeteer
pretty66
2023-05-06 17:53:39 +08:00
@sunshijie 咦 你这个代码测试确实没啥问题,为啥用 postman 访问乱码呢;我再测测看,感谢了
NoOneNoBody
2023-05-06 17:53:57 +08:00
@pretty66 #5
shift-jis 是日语常用编码,双字节,你可以想象和中文 GBK 差不多,但映射不同的字
相同的两个字节,gbk 输出是中文,shift-jis 输出是日文,euc-kr 输出是韩文,所以客户端要选对编码(现代浏览器是自动适应,所以不会乱码)
pretty66
2023-05-06 17:58:03 +08:00
@NoOneNoBody 好的 非常感谢你的解答,差不多明白咋回事了,我再试下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/937915

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX