V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
RqPS6rhmP3Nyn3Tm
V2EX  ›  问与答

Python 爬 ehentai 发生了一些诡异的事情,特来求救

  •  
  •   RqPS6rhmP3Nyn3Tm · 2016-05-08 15:14:21 +08:00 · 12557 次点击
    这是一个创建于 2918 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本来我还在想, e 站直接把图片地址放在 html 里,连解析 JS 都省了,最多二十分钟搞定。现在想想,还是太年轻。

    因为发生了一些很奇怪的事情。

    • 墙内浏览器访问正常, Python 获取会报 connection reset by peer。我猜多半是墙的锅, ss 不方便断点调试我就挂了个 VPN ,果然错误没有了。很奇怪为什么浏览器不会 reset

    • 本来很快就写好了,挂 proxychains 测试的时候发现更诡异的事情,似乎 e 站会根据 IP 的不同返回不同的网页结构,比如这样 和这样的 ,不知道是什么原理。如果网页结构都会变的话,我也不知道怎么写 beautifulsoup 解析了……

    咳,代码挂在 这里,能帮忙看一下那就最好了。

    第 1 条附言  ·  2016-05-08 16:36:11 +08:00
    网页结构会变的问题通过 iframe 的相对位置解决了,不过 connection reset 还是很奇怪,继续研究中
    28 条回复    2016-05-09 02:03:25 +08:00
    UnisandK
        1
    UnisandK  
       2016-05-08 15:29:07 +08:00   ❤️ 1
    握爪,我之前也写过 e 绅士的爬虫
    写完才知道它家是有 API 的 https://ehwiki.org/wiki/API
    RqPS6rhmP3Nyn3Tm
        2
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 15:34:50 +08:00 via Android
    @UnisandK 大雾,折腾了这么久结果发现竟然有 API !!!

    不过这些诡异的错误还真不知道怎么解决
    RqPS6rhmP3Nyn3Tm
        3
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 15:51:44 +08:00
    @UnisandK 不对,这 API 其实没啥用,给出的图片地址是缩略图的
    Bryan0Z
        4
    Bryan0Z  
       2016-05-08 15:56:36 +08:00 via Android
    我猜你用的国内浏览器,云端加速功能关了就不能正常打开了
    RqPS6rhmP3Nyn3Tm
        5
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 15:57:53 +08:00
    @Bryan0Z 我用的是 chrome ,你看这这标志性的开发者工具
    vmebeh
        6
    vmebeh  
       2016-05-08 15:58:34 +08:00
    环境变量`http_proxy` `https_proxy` 可以设置代理
    RqPS6rhmP3Nyn3Tm
        7
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 16:00:46 +08:00
    @vmebeh 其实代理不是问题,挂个 proxychains 就好了,关键是浏览器不会 connection reset 而网页结构会变让我感到很奇怪
    vmebeh
        8
    vmebeh  
       2016-05-08 16:07:18 +08:00
    F12 看一下请求头的 Remote Address 就知道浏览器是不是走了代理
    RqPS6rhmP3Nyn3Tm
        9
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 16:16:59 +08:00
    @vmebeh 然而并没有, strange
    oott123
        10
    oott123  
       2016-05-08 16:25:59 +08:00 via Android
    你描述的这些现象,可能是由于 UA ,也可能是 Accept 头,也可能是 Accept-Language 头不同。
    RqPS6rhmP3Nyn3Tm
        11
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 16:35:05 +08:00
    @oott123 我在想的是,即便是 chrome ,在配置不变的情况下,也会返回不同的网页结构,我猜也许和 UA 没有关系。
    这个问题我通过 iframe 的相对位置解决了,不过 connection reset 还是很诡异。
    1423
        12
    1423  
       2016-05-08 16:54:14 +08:00
    这不是代理或者网络的问题,楼上的答案都偏题了


    是 eheitai 前很久弄得 eheitai home 计划,为了分发图片的

    大概就是 p2p 那种,你也可以跑个作为图床,就会发现有图片下载下来了
    1423
        13
    1423  
       2016-05-08 16:56:57 +08:00
    Hentai@Home
    qnnnnez
        14
    qnnnnez  
       2016-05-08 16:58:35 +08:00 via Android
    没遇到过这样的问题,怀疑是 UA ?
    第一幅图少了 onclick ,这样一来 ajax 也没了,可能它觉得你禁用 js 了?
    RqPS6rhmP3Nyn3Tm
        15
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 17:03:34 +08:00
    @1423 原来如此,这下就清楚了。话说我收不到你的回复提醒啊。

    @qnnnnez 看起来不是 UA 啊,楼上解释得蛮清楚了。
    qnnnnez
        16
    qnnnnez  
       2016-05-08 17:32:25 +08:00
    @BXIA 感觉不像。
    Hentai@Home 只是提供了图片而已,不会提供网页。无论图片是不是 h@h 提供的, html 应该是不会改变的,只是图片的 URL 会变。
    RqPS6rhmP3Nyn3Tm
        17
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 17:55:59 +08:00
    @qnnnnez 同一个 Chrome ,我想应该不会改变 UA ,这样就很诡异了
    qnnnnez
        18
    qnnnnez  
       2016-05-08 18:09:53 +08:00
    @BXIA 有没有可能是代理服务器帮你改了下 Headers ?
    RqPS6rhmP3Nyn3Tm
        19
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 19:09:39 +08:00
    @qnnnnez 我用的是自己的 SS ,应该不会。
    UnisandK
        20
    UnisandK  
       2016-05-08 19:14:27 +08:00   ❤️ 1
    @BXIA 之前触发回复频繁的限制了╮(╯_╰)╭,抱歉隔这么久才回

    官方文档写得比较烂,看看这个 https://github.com/tommy351/ehreader-android/wiki/E-Hentai-JSON-API


    API 虽然的确很不好用,但是借助它会比纯爬虫的方式实现好很多
    hanqi7012
        21
    hanqi7012  
       2016-05-08 19:16:39 +08:00 via Android
    h@h 是不是在国内不能运行了?
    Krime
        22
    Krime  
       2016-05-08 19:31:09 +08:00
    http://pan.baidu.com/s/1pLcQDHx
    两年前还在学校用.net 时写的了,目前还能用。源码在另一台笔记本上没拷出来,新电脑也懒得装 VS 了。
    qnnnnez
        23
    qnnnnez  
       2016-05-08 19:33:52 +08:00 via Android
    @hanqi7012 可以的,但是有可能下图片的时候被墙

    补充一下,略缩图页面的 H@H Downloader 链接提供一个文本文件,里面有一些信息
    RqPS6rhmP3Nyn3Tm
        24
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 19:43:51 +08:00
    @UnisandK 感谢……明天研究一下,今天折腾这玩意实在是有点心累
    RqPS6rhmP3Nyn3Tm
        25
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 19:54:00 +08:00
    @UnisandK 哇靠,这 API 也太丑了吧,我都看不下去了
    zmj1316
        26
    zmj1316  
       2016-05-08 20:45:11 +08:00
    因为 eh 家有个 hath,相当于把图片分布到大量的用户机器上 serve 了,有可能你被分配到的那个 hath 用户的 ip 被墙了就 reset 了?
    RqPS6rhmP3Nyn3Tm
        27
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-05-08 20:53:14 +08:00 via Android
    @zmj1316 不,是主站 reset
    so898
        28
    so898  
       2016-05-09 02:03:25 +08:00
    一整栋楼的绅士……虽然我也写过 ehentai 的抓取器……
    那时候就发现 ehentai 这货返回的 html 会有不一样的,之前还以为是浏览器插件,后来发现要固定 user-agent 来抓
    再后来尝试了浏览器插件来抓图……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   756 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:01 · PVG 05:01 · LAX 14:01 · JFK 17:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.