V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jasonkayzk
V2EX  ›  分享创造

女票想批量保存微博猫咪图片,就写了个微博图片爬虫下载器~

  •  
  •   jasonkayzk ·
    JasonkayZK · 2020-12-20 10:00:12 +08:00 · 10043 次点击
    这是一个创建于 1223 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Github 地址:

    https://github.com/JasonkayZK/weiboPicDownloader

    输入微博用户 ID,选择下载日期即可:

    weiboPicDownloader_4.png

    第 1 条附言  ·  2020-12-20 12:13:22 +08:00

    整个下载器的实现过程其实挺简单的,有兴趣的可以看我之前总结的过程;

    关于Linux和MacOS的版本,当时就是冲着Electron跨平台去写的,结果尝试编译了几次都有问题;= =

    我本身也不是搞前端的,希望有大佬能出手相助看看是啥个问题;

    第 2 条附言  ·  2021-01-07 13:15:27 +08:00

    用Electron-Vue模板重构了一下代码;

    现在各个平台都能够正常使用npm run dev本地开发,npm run build编译了;

    94 条回复    2021-06-09 18:34:14 +08:00
    wushigejiajia01
        1
    wushigejiajia01  
       2020-12-20 10:08:24 +08:00 via Android
    可以爬小姐姐吧?
    那真是好东西了
    jasonkayzk
        2
    jasonkayzk  
    OP
       2020-12-20 10:12:09 +08:00
    @wushigejiajia01 只要是微博能看到的图片都是可以爬的。但是不能去水印;
    Tyuans
        3
    Tyuans  
       2020-12-20 10:32:45 +08:00
    批量搬运小姐姐图片到外网
    jasonkayzk
        4
    jasonkayzk  
    OP
       2020-12-20 10:44:36 +08:00
    @Tyuans 哈哈,可以可以~
    anxn
        5
    anxn  
       2020-12-20 10:46:39 +08:00 via Android
    Linux 能不能也给一份 release,我编译会报错
    whatalittleboy
        6
    whatalittleboy  
       2020-12-20 10:46:42 +08:00
    体积有点大,解压后 160 MB,但启动速度挺快的👍👍
    s1th
        7
    s1th  
       2020-12-20 10:47:35 +08:00 via iPhone
    别光说,小姐姐图片多的微博是哪个
    jasonkayzk
        8
    jasonkayzk  
    OP
       2020-12-20 10:50:17 +08:00
    @whatalittleboy 体积大是因为 Electron 编译之后本身就太大,项目挺简单的也没用啥东西。= =
    liyiecho
        9
    liyiecho  
       2020-12-20 11:07:23 +08:00   ❤️ 1
    hfJ433
        10
    hfJ433  
       2020-12-20 11:13:28 +08:00   ❤️ 1
    @s1th 6032474791 爬起来
    wangdefu
        11
    wangdefu  
       2020-12-20 11:32:22 +08:00 via Android
    @liyiecho 这个可以定时 比如每天下载某个固定用户的微博吗

    我关注了一个博主 经常几天就清空
    jasonkayzk
        12
    jasonkayzk  
    OP
       2020-12-20 11:36:44 +08:00
    @anxn 我试着编译一下看看= =
    jasonkayzk
        13
    jasonkayzk  
    OP
       2020-12-20 11:37:21 +08:00
    @wangdefu 如果是 py 脚本的话,设置个 crontab 丢到服务器上跑呗;
    shgdym
        14
    shgdym  
       2020-12-20 11:49:57 +08:00
    py 写的 很简单的一个微博爬虫: https://github.com/shgdym/weiboSpider
    shgdym
        15
    shgdym  
       2020-12-20 11:55:12 +08:00
    qxsd
        16
    qxsd  
       2020-12-20 12:05:33 +08:00 via Android
    有可以爬评论图片的吗
    wangdefu
        17
    wangdefu  
       2020-12-20 12:06:57 +08:00 via Android
    @shgdym 有点意思
    会不会喝茶啊
    jasonkayzk
        18
    jasonkayzk  
    OP
       2020-12-20 12:07:37 +08:00
    @qxsd 这个也可以爬,只是稍微麻烦一些了;你可以直接 Fork 这个仓库,然后修改鸭!
    crab
        19
    crab  
       2020-12-20 13:32:17 +08:00
    时间范围判断不只要大于等于开始时间,也还要判断一个小于等于结束时间吧。
    renyiqiu
        20
    renyiqiu  
       2020-12-20 14:14:12 +08:00
    不错,用起来
    kingcos
        21
    kingcos  
       2020-12-20 14:29:23 +08:00
    如果是已编辑是不是就爬不到了?
    jasonkayzk
        22
    jasonkayzk  
    OP
       2020-12-20 16:11:03 +08:00
    @kingcos 这个…,我也不玩微博= =,我也不知道啊!你试试 /呆滞
    justfun
        23
    justfun  
       2020-12-20 16:25:47 +08:00
    杀鸡焉用宰牛刀 😅😂。正好昨天用 PHP 写了个微博爬虫 备份了下自己微博的数据。体积才不到 20KB
    limuyan44
        24
    limuyan44  
       2020-12-20 16:37:20 +08:00
    几年前的一个深夜为了爬微博搞笑排行榜的下面的表情包写了个,微博展示的图片算是又压了一遍,记得路径改成 large 就好了,后来倒是爬了不少小姐姐。。
    loading
        25
    loading  
       2020-12-20 16:41:31 +08:00 via Android
    @s1th 对对对,一般这种里面最有价值的就是 list,这居然没有…
    Raynard
        26
    Raynard  
       2020-12-20 16:44:33 +08:00
    jasonkayzk
        27
    jasonkayzk  
    OP
       2020-12-20 16:51:05 +08:00
    @justfun hhhh~ 正好前段时间粗略看了下 Electron,就写了一个呗;😅😅
    JCZ2MkKb5S8ZX9pq
        28
    JCZ2MkKb5S8ZX9pq  
       2020-12-20 19:00:35 +08:00
    我也造过这个轮子,我记得获取微博的时候是需要登陆过的 cookie 。然后下载图片没问题,但下载视频的地址没搞(入口用的 wap 版)。

    另外借楼问一下,之前搞的时候发现过被夹的图片(会变成灰色图),获得 id 之后也能看到原图。但过太久了,忘了怎么搞了。有大神知道嘛?
    jasonkayzk
        29
    jasonkayzk  
    OP
       2020-12-20 19:06:01 +08:00
    @JCZ2MkKb5S8ZX9pq 我的这个是不需要 cookie 的,用微博移动版: https://m.weibo.cn/ ,可以看看这个能不能实现= =
    PbCopy111
        31
    PbCopy111  
       2020-12-20 21:01:08 +08:00
    @wangdefu #11 必须可以定时。。。我一直在用,哈哈哈,你看看说明
    5966
        32
    5966  
       2020-12-20 22:02:56 +08:00 via iPhone
    不错,问问,我就想找一个命名规则是根据微博(首句)内容命名的!
    YouLMAO
        33
    YouLMAO  
       2020-12-20 22:36:18 +08:00 via Android
    你确定 pussy 是猫咪,还是对你意有所指
    jasonkayzk
        34
    jasonkayzk  
    OP
       2020-12-21 09:00:28 +08:00
    @5966 这个改一下源码就好了,在寻找图片链接的时候,同时判断一下微博的内容是否符合你的要求就行了!
    someonedeng
        35
    someonedeng  
       2020-12-21 09:18:24 +08:00
    @YouLMAO 老蛇皮了
    liumxz
        36
    liumxz  
       2020-12-21 09:49:31 +08:00
    没下载地址啊
    liumxz
        37
    liumxz  
       2020-12-21 09:51:46 +08:00
    看到了 我的
    lwlizhe
        38
    lwlizhe  
       2020-12-21 09:52:30 +08:00
    呵,一看就是假的,试都不用试





    会写程序的会有女朋友?[手动狗头]
    jasonkayzk
        39
    jasonkayzk  
    OP
       2020-12-21 09:57:51 +08:00
    @lwlizhe 啪的一下,很快啊!
    akaayy
        40
    akaayy  
       2020-12-21 10:09:18 +08:00 via Android
    @justfun 能分享学习一下吗
    skygee
        41
    skygee  
       2020-12-21 10:19:01 +08:00
    这个不怕封 ip 吗
    shgdym
        42
    shgdym  
       2020-12-21 10:27:16 +08:00
    @wangdefu 在我自己服务器上跑了一年多了
    jasonkayzk
        43
    jasonkayzk  
    OP
       2020-12-21 10:31:53 +08:00
    @skygee 如果不是深度使用,以 JS 单线程和设置的延时来看,这点爬虫流量应该算不了什么吧= =;
    night98
        44
    night98  
       2020-12-21 10:43:07 +08:00
    能爬原图吗?还是普通大图?原图大小一般 3-5Mb 大小
    jasonkayzk
        45
    jasonkayzk  
    OP
       2020-12-21 10:45:06 +08:00
    @night98 应该是原图,是请求返回 json 的"large"字段;
    JCZ2MkKb5S8ZX9pq
        46
    JCZ2MkKb5S8ZX9pq  
       2020-12-21 11:22:34 +08:00
    @jasonkayzk
    试了下倒真是,这个个人首页需要登录,全部微博反而不需要权限了。
    这个你试下来有频度限制嘛,访问多了会出 418 错误什么的嘛。
    jasonkayzk
        47
    jasonkayzk  
    OP
       2020-12-21 11:34:30 +08:00
    @JCZ2MkKb5S8ZX9pq 暂时没发现频度限制,本来想嵌入一个 go 并发下载的,后来想了想,万一太猛被封 IP 了呢,所以还是用 JS 吧;
    JCZ2MkKb5S8ZX9pq
        48
    JCZ2MkKb5S8ZX9pq  
       2020-12-21 12:00:13 +08:00
    @jasonkayzk

    我看了看 log,这个 mobile 版的我也抓过。不过去年请求参数限制过一阵子。所以改用 wap+有效 cookie 了。

    # 20190717 已失效 改用 token 验证 尚未破解 目前只能获得前 10 条

    但是现在请求参数反而简化了。感觉说不定啥时候微博又会变。
    adm7n
        49
    adm7n  
       2020-12-21 12:11:04 +08:00
    微博有个好友圈功能,只有互相关注了才能看到好友圈内的微博,请问这种情况是否可以下载图片(我的账号有好友圈权限)。
    fl2d
        50
    fl2d  
       2020-12-21 12:49:47 +08:00
    她可能只是想让你买只猫
    jasonkayzk
        51
    jasonkayzk  
    OP
       2020-12-21 12:57:25 +08:00   ❤️ 1
    @JCZ2MkKb5S8ZX9pq 哈哈,这个倒是有可能;爬虫这种一直都不稳定;= =
    jasonkayzk
        52
    jasonkayzk  
    OP
       2020-12-21 12:58:15 +08:00
    @adm7n 这个估计不行,得用 cookie 的方式;可以参考其他人发的解决方案;
    jasonkayzk
        53
    jasonkayzk  
    OP
       2020-12-21 12:58:44 +08:00
    @fl2d 养了的,哈哈
    justfun
        54
    justfun  
       2020-12-21 13:59:47 +08:00
    @akaayy 极其的简陋😂 主要微博返回的 json 太详细了
    https://github.com/scriptway/weibo_backup
    nspih
        55
    nspih  
       2020-12-21 14:08:15 +08:00
    年轻人不讲武德,居然来爬、来偷袭我 69 岁老同志的微博。这好吗?这不好。希望你耗子尾汁
    ab
        56
    ab  
       2020-12-21 14:10:04 +08:00 via iPhone
    有点意思啊
    justfun
        57
    justfun  
       2020-12-21 14:11:21 +08:00 via iPhone
    @adm7n 可以的 有 cookie 就行。参考我楼上发的 可以爬到
    jasonkayzk
        58
    jasonkayzk  
    OP
       2020-12-21 14:15:52 +08:00
    @ab 谢谢夸奖,哈哈
    jasonkayzk
        59
    jasonkayzk  
    OP
       2020-12-21 14:16:32 +08:00
    @nspih 二百多公斤的英国大理石都爬不动我的一个微博;
    JCZ2MkKb5S8ZX9pq
        60
    JCZ2MkKb5S8ZX9pq  
       2020-12-21 14:20:10 +08:00
    @justfun

    请问这个接口的来源是哪一端?
    因为微博入口太多,你提到了取 header,可以考虑附上参考地址,因为各个入口的 header 可能不大一样。
    justfun
        61
    justfun  
       2020-12-21 14:26:50 +08:00
    @JCZ2MkKb5S8ZX9pq PC Web 端 。https://weibo.com/ 到这里登录 。如果是旧版界面的话 右上角头像偏下的位置有一个立即体验新版微博的入口
    jackrebel
        62
    jackrebel  
       2020-12-21 16:46:29 +08:00
    这个是个好玩的东西。
    jasonkayzk
        63
    jasonkayzk  
    OP
       2020-12-21 20:04:13 +08:00
    @jackrebel 哈哈,谢谢夸奖~
    terrywater
        64
    terrywater  
       2020-12-21 21:48:03 +08:00
    @wushigejiajia01 爬妹子? 好有画面感。上攀双峰,下探双叶。
    terrywater
        65
    terrywater  
       2020-12-21 21:48:47 +08:00
    @jasonkayzk 你闪了吗?你没有闪!
    qzhai
        66
    qzhai  
       2020-12-22 13:15:15 +08:00
    MD, 有女票又有猫
    iyg429
        67
    iyg429  
       2020-12-24 08:14:00 +08:00 via iPhone
    有没有微博视频下载?
    iyg429
        68
    iyg429  
       2020-12-24 08:14:33 +08:00 via iPhone
    微博好多想看的我连续剧 还是高清的。如果可以选定日期下载好完美
    jasonkayzk
        69
    jasonkayzk  
    OP
       2020-12-24 08:36:21 +08:00
    @iyg429 是可以添加视频下载的,我请求的那个 json 里面有视频的流地址;但是一般视频挺大的我就没有加= =;
    mojimomo
        70
    mojimomo  
       2020-12-24 14:08:33 +08:00
    我批量下了很多图片,但是发现个问题,很多图片下载不完整都是一条条线。是不是下载的模块还需要优化下?
    jasonkayzk
        71
    jasonkayzk  
    OP
       2020-12-24 14:38:29 +08:00
    @mojimomo 可能是因为图片木有下载完;等全部下载完应该就全显示了;如果下了一半,会出现这个问题;
    overthemoon
        72
    overthemoon  
       2020-12-24 15:32:18 +08:00
    收藏了,缺一个叫我帮忙下载微博图片的女朋友
    jasonkayzk
        73
    jasonkayzk  
    OP
       2020-12-24 15:50:51 +08:00
    @overthemoon 哈哈,肯定会有的!
    mojimomo
        74
    mojimomo  
       2020-12-25 10:26:17 +08:00
    @jasonkayzk 应该是完全下载完的了,因为进度条都显示完成了。
    这个估计是我用过的体验最好的微博下载了
    界面好看加上图片有日期
    就是这个图片下载有问题,希望能够完善一下
    dongxy688
        75
    dongxy688  
       2020-12-25 16:19:09 +08:00
    爬下来放外网卖了
    jasonkayzk
        76
    jasonkayzk  
    OP
       2020-12-25 19:25:04 +08:00
    @dongxy688 别把,是个狼人!
    jasonkayzk
        77
    jasonkayzk  
    OP
       2020-12-25 19:26:26 +08:00
    @mojimomo 多谢夸奖哈,我最近准备回家。回家之后,看看能不能重构一下代码,把这个修复一下;顺便支持跨平台!
    Jamestone
        78
    Jamestone  
       2020-12-27 16:29:59 +08:00
    @Raynard 好多都反馈不能用了,我安装后也不能用
    jasonkayzk
        79
    jasonkayzk  
    OP
       2021-01-07 13:19:19 +08:00
    @anxn Linux 版本已经搞定了;
    jasonkayzk
        80
    jasonkayzk  
    OP
       2021-01-07 13:20:17 +08:00
    用模板重构了代码,加上了 Linux 和 Mac 的 Release ;
    anxn
        81
    anxn  
       2021-01-08 23:02:40 +08:00 via Android
    @jasonkayzk 已用上,多谢
    ririliu
        82
    ririliu  
       2021-01-25 20:44:16 +08:00
    一直会有 js 报错:
    Uncaught Exception:
    Error: read ECONNREST
    at _errnoException(util.js:1024:11)
    at TLSWrap.onread(net.js:615:25)
    jasonkayzk
        83
    jasonkayzk  
    OP
       2021-01-26 09:28:41 +08:00
    @ririliu 没遇见过这个错误啊~下最新的版本试试?

    https://github.com/JasonkayZK/weiboPicDownloader/releases
    ririliu
        84
    ririliu  
       2021-01-26 16:46:49 +08:00
    @jasonkayzk 我用的就是这个版本,报错的图片我查看了下会不完整(下面有一部分是没有内容的),是和网络有关系?不知道能否加个重试的机制,某张图片重试 n 次还失败就跳过,因为现在这样报错每次弹出来我都得点一下,下载才能继续,我下的某个微博比如 2000 多张图片,就得一直守着点了几十次报错的弹窗
    jasonkayzk
        85
    jasonkayzk  
    OP
       2021-01-27 11:30:11 +08:00
    @ririliu 图片下载不完全应该就是网络的原因了,这个问题我也碰到过。这个问题我看一下怎么解决吧。在下一个版本解决了!
    ririliu
        86
    ririliu  
       2021-02-01 10:43:04 +08:00
    @jasonkayzk 已经更新了吗? releases 里面没看到
    jasonkayzk
        87
    jasonkayzk  
    OP
       2021-02-03 08:17:13 +08:00 via Android
    @ririliu 最近没什么时间,在搞毕设…!😓
    moonkiller
        88
    moonkiller  
       2021-02-13 12:35:22 +08:00
    @jasonkayzk 求支持视频😭
    jasonkayzk
        89
    jasonkayzk  
    OP
       2021-02-14 10:44:01 +08:00
    @moonkiller 会考虑添加视频;
    ririliu
        90
    ririliu  
       2021-03-08 11:38:16 +08:00
    还会更新嘛。。。
    jasonkayzk
        91
    jasonkayzk  
    OP
       2021-03-08 12:13:13 +08:00 via Android
    @ririliu 会更新,但是现在在搞毕业论文。估计要等一段时间了。
    ririliu
        92
    ririliu  
       2021-05-19 19:10:16 +08:00
    @jasonkayzk 呃,我是不是得自己动手改代码了...
    jasonkayzk
        93
    jasonkayzk  
    OP
       2021-05-19 20:36:23 +08:00
    @ririliu #92 不好意思哈,最近都没在搞这个= =,估计还要一段时间。如果你比较急的话可以 Fork 下来自己改~
    ririliu
        94
    ririliu  
       2021-06-09 18:34:14 +08:00
    @jasonkayzk https://github.com/JasonkayZK/weiboPicDownloader/issues/5, 这个是什么问题呢,运行不起来
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5540 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 02:52 · PVG 10:52 · LAX 19:52 · JFK 22:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.