V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pretty66
V2EX  ›  程序员

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

  •  
  •   pretty66 · 2023-05-06 17:31:46 +08:00 · 1313 次点击
    这是一个创建于 599 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    11 条回复    2023-05-06 17:58:03 +08:00
    aeron
        1
    aeron  
       2023-05-06 17:34:05 +08:00
    有反爬吧,检测是不是浏览器有很多方法的,不止请求头
    encro
        2
    encro  
       2023-05-06 17:40:58 +08:00
    <meta charset="Shift_JIS">
    你的爬虫的编码格式和它不一致。
    rookie4show
        3
    rookie4show  
       2023-05-06 17:43:22 +08:00
    f12 看了下,直接返回的就是乱码的,然后有几个 js 执行了,可能是替换内容的
    pretty66
        4
    pretty66  
    OP
       2023-05-06 17:45:13 +08:00
    @rookie4show 浏览器请求 F12 看不是乱码啊,我用浏览器把 js 禁用后浏览器发起请求后依然正常的
    pretty66
        5
    pretty66  
    OP
       2023-05-06 17:46:26 +08:00
    @encro 啥意思,有办法能解决乱码问题吗;我搜了下 Shift_JIS 这个编码 没找到啥有用的信息😞
    NoOneNoBody
        6
    NoOneNoBody  
       2023-05-06 17:48:09 +08:00
    1. shift-jis
    2. 见到好几个 js 都运行了 eval ,估计是需要客户端渲染
    sunshijie
        7
    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
        8
    encro  
       2023-05-06 17:52:30 +08:00
    得看你用什么爬虫,将编码进行转码。
    再不行就上 puppeteer
    pretty66
        9
    pretty66  
    OP
       2023-05-06 17:53:39 +08:00
    @sunshijie 咦 你这个代码测试确实没啥问题,为啥用 postman 访问乱码呢;我再测测看,感谢了
    NoOneNoBody
        10
    NoOneNoBody  
       2023-05-06 17:53:57 +08:00   ❤️ 2
    @pretty66 #5
    shift-jis 是日语常用编码,双字节,你可以想象和中文 GBK 差不多,但映射不同的字
    相同的两个字节,gbk 输出是中文,shift-jis 输出是日文,euc-kr 输出是韩文,所以客户端要选对编码(现代浏览器是自动适应,所以不会乱码)
    pretty66
        11
    pretty66  
    OP
       2023-05-06 17:58:03 +08:00
    @NoOneNoBody 好的 非常感谢你的解答,差不多明白咋回事了,我再试下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5514 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 07:53 · PVG 15:53 · LAX 23:53 · JFK 02:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.