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

写了一个微博相册的爬虫,顺便根据爬虫抓到的图片,写了个随机发图的 Telegram 的 Bot。

  •  5
     
  •   lincanbin ·
    lincanbin · 2015-11-17 09:52:41 +08:00 · 13882 次点击
    这是一个创建于 3328 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新浪微博上有不少福利号,想保存一下他们的图片。
    于是昨天中午吃饭前花了点时间,拿 Python 写了个爬虫,扔 VPS 上爬了上万张图。

    难以遏制想与大家分享的心情,看了看 Telegram 的 Bot API 文档,发现 tg 的 bot 设计还是挺简单的,于是根据 Telegram 给的 demo 进行修改,做了一个发图的 Bot 出来。

    Telegram 的 Bot 的演示: https://telegram.me/canbin_bot

    爬虫: https://github.com/lincanbin/Sina-Weibo-Album-Downloader
    Telegram Bot: https://github.com/lincanbin/Telegram-Simple-Image-Bot

    35 条回复    2017-01-20 08:59:29 +08:00
    lincanbin
        1
    lincanbin  
    OP
       2015-11-17 09:55:55 +08:00   ❤️ 1


    爬虫抓了几 GiB 的图片,在 DeactivatedOcean 上跑了好几分钟,可以跑满百兆带宽,并没有被 Deactivated 。
    昨天吃饭时一直盯着手机的 SSH 客户端,生怕被 Deactivated 了。

    图片内容来自一批微博账号,抓了上万张吧,并没有一一查看,大抵都是妹子图吧?
    zangbob
        2
    zangbob  
       2015-11-17 10:04:02 +08:00
    感谢灿神又有好作品分享~~~已 star ……

    (是否应再加几行字: 1024 楼主好人之类的…… :)
    n37r06u3
        3
    n37r06u3  
       2015-11-17 10:22:21 +08:00
    readme 里截图用的什么浏览器
    GPU
        4
    GPU  
       2015-11-17 10:23:43 +08:00
    @lincanbin 我想知道是哪一批微博账号 。
    lincanbin
        5
    lincanbin  
    OP
       2015-11-17 10:23:46 +08:00
    @n37r06u3 Edge
    lwbjing
        6
    lwbjing  
       2015-11-17 10:41:38 +08:00
    fllow
    jedyu
        7
    jedyu  
       2015-11-17 10:58:29 +08:00
    Lofter 也有好多哦
    lincanbin
        8
    lincanbin  
    OP
       2015-11-17 11:10:23 +08:00 via Android
    @jedyu 请把地址发我,我要去抓。
    Suclogger
        9
    Suclogger  
       2015-11-17 11:16:45 +08:00
    果然福利才是人类的根本驱动力么
    halfer53
        10
    halfer53  
       2015-11-17 12:19:58 +08:00
    Tumblr 才是最多的,各种福利简直精尽人亡
    lincanbin
        11
    lincanbin  
    OP
       2015-11-17 12:24:08 +08:00
    @halfer53 所以说,账号呢?

    有 tg 账号的在 tg 群里发我: https://telegram.me/joinchat/BdahuwNx-nH8B5Ko6_swww
    halfer53
        12
    halfer53  
       2015-11-17 12:36:46 +08:00
    @lincanbin http://www.coolapk.com/apk/com.tumblr 酷安评论里有很多。我的 Tumblr 上还关注了 200 多个绝对领域的,回家后发给你
    chengzhoukun
        13
    chengzhoukun  
       2015-11-17 12:43:35 +08:00
    还有新闻联播截图😓
    lonelygo
        14
    lonelygo  
       2015-11-17 12:45:26 +08:00
    已✨, 1024 赞。
    imn1
        15
    imn1  
       2015-11-17 12:47:42 +08:00
    爬虫不难搞,难的是如何搜集发布号, share 一下吧
    Hysteria
        16
    Hysteria  
       2015-11-17 13:04:22 +08:00
    bot 简直不能太溜,赞得飞起。
    lincanbin
        17
    lincanbin  
    OP
       2015-11-17 13:38:00 +08:00
    @halfer53 Tumblr 好像还有视频啊,我要抓 Tumblr 。
    phithon
        18
    phithon  
       2015-11-17 13:39:54 +08:00
    分享福利号啊!!
    PandaSaury
        19
    PandaSaury  
       2015-11-17 14:18:33 +08:00
    可以在 github 开个地方,专门收集福利号
    mfinal
        20
    mfinal  
       2015-11-18 00:45:00 +08:00
    已经 star 表示👍。学习一下怎么爬 weibo
    joewangyz
        21
    joewangyz  
       2015-11-18 14:44:55 +08:00
    关键是福利号啊,,不然哪获取 OID 和 照片墙的 cookie 。。
    cclishan
        22
    cclishan  
       2015-11-18 16:12:30 +08:00
    @lincanbin Tumblr 太多了 。。要不要公布关注列表。。
    banri
        23
    banri  
       2015-11-18 21:37:31 +08:00
    200 个绝对领域!
    touch
        24
    touch  
       2015-11-19 18:35:58 +08:00
    @lincanbin 之前也爬过微博信息。但是账号被封了。怎么解决的
    lincanbin
        25
    lincanbin  
    OP
       2015-11-19 19:41:33 +08:00
    @touch 爬图床就没事,爬 API 有频率限制的。
    touch
        26
    touch  
       2015-11-20 11:54:09 +08:00
    @lincanbin 我是直接通过页面 html 爬取没有调用 api
    touch
        27
    touch  
       2015-11-20 11:55:53 +08:00
    @lincanbin 爬取一段时间后就只直接账号被封。被检测到属于异常行为
    lincanbin
        28
    lincanbin  
    OP
       2015-11-20 13:42:43 +08:00
    @touch 我爬的那部分,都不用登录啊
    touch
        29
    touch  
       2015-11-20 14:05:54 +08:00
    @lincanbin #;#
    fuliti
        30
    fuliti  
       2015-11-22 16:03:12 +08:00
    感觉好神奇 ,可惜不会用。
    JiaFeiX
        31
    JiaFeiX  
       2015-12-02 12:34:52 +08:00
    请问楼主爬取的哪些账号?
    bbjoe
        32
    bbjoe  
       2016-08-30 17:43:21 +08:00
    请问爬相册老会爬漏是什么问题呢?比如 402 个图片 id ,运行完只得百来张。
    lincanbin
        33
    lincanbin  
    OP
       2016-08-30 17:49:25 +08:00
    @bbjoe 设置 CRAWL_PHOTOS_NUMBER = 402
    要爬取的图片上限
    lincanbin
        34
    lincanbin  
    OP
       2016-08-30 17:49:46 +08:00
    @bbjoe 或者直接让 CRAWL_PHOTOS_NUMBER = 10000
    设个非常大的数值。
    yxqcyl
        35
    yxqcyl  
       2017-01-20 08:59:29 +08:00
    出现以下错误是什么原因?

    ['4065529837148919']
    9f128f33jw1e8qgp5bmzyj2050050aa8.jpg
    lxhxixi_org.gif
    2Flxhxixi_org.gif
    9f128f33ly1fbw8sp2ro7j20qo1beq4l.jpg
    Exception in thread Thread-51:
    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 137, in _new_conn
    (self.host, self.port), self.timeout, **extra_kw)
    File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 67, in create_connection
    for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
    File "/usr/lib/python3.5/socket.py", line 732, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
    socket.gaierror: [Errno -3] Temporary failure in name resolution

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 559, in urlopen
    body=body, headers=headers)
    File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 353, in _make_request
    conn.request(method, url, **httplib_request_kw)
    File "/usr/lib/python3.5/http/client.py", line 1106, in request
    self._send_request(method, url, body, headers)
    File "/usr/lib/python3.5/http/client.py", line 1151, in _send_request
    self.endheaders(body)
    File "/usr/lib/python3.5/http/client.py", line 1102, in endheaders
    self._send_output(message_body)
    File "/usr/lib/python3.5/http/client.py", line 934, in _send_output
    self.send(msg)
    File "/usr/lib/python3.5/http/client.py", line 877, in send
    self.connect()
    File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 162, in connect
    conn = self._new_conn()
    File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 146, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
    requests.packages.urllib3.exceptions.NewConnectionError: <requests.packages.urllib3.connection.HTTPConnection object at 0x7f6d60069b00>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/requests/adapters.py", line 376, in send
    timeout=timeout
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5468 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 06:56 · PVG 14:56 · LAX 22:56 · JFK 01:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.