V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
theodorus
V2EX  ›  Python

微博监控程序的 Python 实现

  •  
  •   theodorus · 2016-08-12 00:31:41 +08:00 via iPhone · 5590 次点击
    这是一个创建于 3012 天前的主题,其中的信息可能已经有所发展或是发生改变。
    打算用 Python 在 Linux 的纯 CLI 下实现微博监控功能。即对某个用户动态不断刷新,一旦有新微博就保存下来。目前只考虑 txt 存储。不考虑数据库。
    ***
    由于刚学写这种程序,照网上有的程序(尽管代码非常漂亮)。可算法没有绕开验证码这个比较坑的问题。
    个人编程水平很浅,希望 V2EX 的朋友告知一些比较好的算法, Python 库等。最好是比较成熟的库。
    如果有比较好的代码,希望分享一下。
    其他的爬虫程序,也可以分享,虽然 github 很多,但是比较好的感觉还是不太多的。

    谢谢(๑*◡*๑)
    ………
    //写了一个晚上,模拟浏览器还没登进去。人生啊人生。
    40 条回复    2016-08-13 16:14:12 +08:00
    chroming
        1
    chroming  
       2016-08-12 00:39:07 +08:00 via iPhone
    微博做了很多防爬虫的处理。登录的话用 selenium 模拟比较方便。验证码和 ip 问题就要想办法解决了。
    theodorus
        2
    theodorus  
    OP
       2016-08-12 00:39:13 +08:00 via iPhone
    代码交流可考虑粘到 http://paste.ubuntu.com 中。然后贴上链接。
    theodorus
        3
    theodorus  
    OP
       2016-08-12 00:41:04 +08:00 via iPhone
    @chroming 我使用的是 selenium 。但是始终无法越过验证码。这个没有方法可以解决吗。我想完全在 CLI 下面实现。
    cookie 呢。
    Chyroc
        4
    Chyroc  
       2016-08-12 00:49:28 +08:00
    使用打码平台或者识别验证码,我自己的项目,简单的我就自己识别了,复杂的就使用打码平台,快捷又经济!
    Chyroc
        5
    Chyroc  
       2016-08-12 00:50:12 +08:00
    另外,微博爬虫应该是使用 3g ,手机页面等等比较好吧
    neosfung
        6
    neosfung  
       2016-08-12 01:02:11 +08:00 via Android
    微博不是有 api 么。你先在微博的开放平台注册好你的应用,然后创建一个 dummy 的用户,并且允许它访问你的应用。然后就可以你就可以获得 dummy 的授权并且可以访问它关注微博的更新
    lc4t
        7
    lc4t  
       2016-08-12 01:24:22 +08:00 via iPhone   ❤️ 1
    微博主站密码是 rsa 的,手机版直接的,消息爬虫优先考虑移动版。
    miyuki
        8
    miyuki  
       2016-08-12 03:03:34 +08:00 via Android
    GhostPost 和 LZ 的想法差不多
    kslr
        9
    kslr  
       2016-08-12 03:26:42 +08:00 via Android
    有个微博小挂件 直接解析分析即可
    kindjeff
        10
    kindjeff  
       2016-08-12 06:57:29 +08:00 via iPhone
    爬微博档案的 rss ,微博档案是一个第三方的微博备份的网站
    theodorus
        11
    theodorus  
    OP
       2016-08-12 07:51:04 +08:00 via iPhone
    @Chyroc 对。可是验证码在 CLI 下面人工实现不了好像?
    肯定是手机端。目前主要是 web.cn 这个域名
    theodorus
        12
    theodorus  
    OP
       2016-08-12 07:52:24 +08:00 via iPhone
    @neosfung 想自己实现一遍。毕竟不是做项目,不到没办法的话不太想用现成的 API 。主要就是登录问题。
    theodorus
        13
    theodorus  
    OP
       2016-08-12 07:54:47 +08:00 via iPhone
    @lc4t 问下 rsa 是什么意思。这个具体怎么用呢。我一直在考虑用户名密码登录。所以卡在验证码上面。
    theodorus
        14
    theodorus  
    OP
       2016-08-12 07:56:39 +08:00 via iPhone
    @kindjeff 它那个太慢了应该?主要还是想自己写个出来。可是微博反爬虫有点厉害。有点想破解掉的意思。
    lc4t
        15
    lc4t  
       2016-08-12 08:35:46 +08:00 via iPhone
    @theodorus 卡在验证码..验证码识别吧..另外登录成功了记得一直保持 cookies ,不要每次登录去查看更新
    janxin
        16
    janxin  
       2016-08-12 09:00:23 +08:00
    lz 这个需求 API 就行吧...
    em70
        17
    em70  
       2016-08-12 09:04:38 +08:00
    用微博官方提供的 API,记得每小时可以刷 5000 次动态次好像
    theodorus
        18
    theodorus  
    OP
       2016-08-12 09:26:48 +08:00
    @em70 恩。看来也只能用 API 了。
    chaichaichai
        19
    chaichaichai  
       2016-08-12 09:39:56 +08:00
    爬.cn 域名,我当时似乎没有遇上验证码问题, ip 的话用动态 ip 或者去写一个爬代理的爬虫
    chaichaichai
        20
    chaichaichai  
       2016-08-12 09:40:39 +08:00
    我下班回家找找我当时写的代码,没准改改还能用
    jsonzz
        21
    jsonzz  
       2016-08-12 09:41:33 +08:00
    去年写过,当时抓包拿到了 weibo 的 api 。每隔半小时爬取下那个用户的微博数总量,如有变化,再爬,存到 txt 里
    em70
        22
    em70  
       2016-08-12 09:46:34 +08:00
    @jsonzz 不用抓包拿啊,可以申请正式的 API,否则那些第三方微博客户端怎么开发的
    hack
        23
    hack  
       2016-08-12 10:02:22 +08:00
    移动端的请求,抓包分析,可能更快
    goodluck
        24
    goodluck  
       2016-08-12 10:06:46 +08:00
    如果只看微博是不需要登陆的,看个人信息才需要登陆!
    theodorus
        25
    theodorus  
    OP
       2016-08-12 10:11:02 +08:00
    @chaichaichai 我也是 CN 域名。现在好像要验证码了。不过还是很想看看你的代码。能不能分享一下?我做个参考。
    theodorus
        26
    theodorus  
    OP
       2016-08-12 10:11:53 +08:00
    @jsonzz 恩。感觉 API 是比较好的实现方式。打算不模拟浏览器行为了。变数太大了
    theodorus
        27
    theodorus  
    OP
       2016-08-12 10:13:45 +08:00
    @goodluck 可是我们在浏览器中是需要登录的把?刚才我试了一下,不行。必须要登录应该。 CN 域名。
    cenxun
        28
    cenxun  
       2016-08-12 10:40:12 +08:00
    记得手机版可以直接抓的
    theodorus
        29
    theodorus  
    OP
       2016-08-12 10:41:57 +08:00
    @cenxun 就是验证码的问题。没有验证码很好抓。看来只能用 API 了。
    cenxun
        30
    cenxun  
       2016-08-12 13:43:50 +08:00
    @theodorus 你这个验证码是登录时的,还是其他的? 我怎么记得手机版不用登录可以直接抓 json
    pheyer
        31
    pheyer  
       2016-08-12 14:13:20 +08:00
    现在的微博有一个痛点,就是收藏的微博可能会被原作者删除,然后你就看不到了,作者要不考虑改善一下?
    enyblock
        32
    enyblock  
       2016-08-12 14:55:30 +08:00 via Android
    其实可以用 IFTTT 加 evernote 来实现,我会告诉你我用这样的方式来提醒女神的微博的更新么?一旦女神发微博,短信提醒我,微博保存到 evernote.
    enyblock
        33
    enyblock  
       2016-08-12 15:00:20 +08:00 via Android
    其实并不需要登录吧,我说下我用 IFTTT 的原理,你看能借鉴不?
    条件是某微博博主的 rss,不要用微博名字,用微博给用户分配的那个 id,一直去监听这个应该就可以实现了吧。
    Clude
        34
    Clude  
       2016-08-12 15:20:18 +08:00
    @lc4t 超人说的对
    haozibi
        35
    haozibi  
       2016-08-12 16:46:13 +08:00 via Android
    不用模拟登录,用微博 api 。 http://www.github.com/haozibi/BiWeibo 之前练手写的,凑合看吧
    theodorus
        36
    theodorus  
    OP
       2016-08-13 06:22:22 +08:00 via iPhone
    @haozibi 嗯。我参考一下。 谢谢。
    theodorus
        37
    theodorus  
    OP
       2016-08-13 06:24:42 +08:00 via iPhone
    @enyblock 如果是应用的话自然现成的设计和软件相当好。实现起来也很漂亮。 rss 的话我没找到地址?或者微博反爬虫是有的,所以抓不到数据。需要先认证。目前在学 API 。
    theodorus
        38
    theodorus  
    OP
       2016-08-13 06:45:14 +08:00 via iPhone
    @enyblock 请问你的 IFTTT 怎么写的?触发条件好像是只有自己的 post ?
    cszhiyue
        39
    cszhiyue  
       2016-08-13 07:05:20 +08:00
    @enyblock 微博没有官方 rss 吧。倒是有一个微博档案的提供这个服务。不过并不稳定。
    coolloves
        40
    coolloves  
       2016-08-13 16:14:12 +08:00 via iPhone
    如果只是监控某人动态,没必要登录,用移动版的微博.cn 就可以监控,只是部分内容显示不全
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2718 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:19 · PVG 15:19 · LAX 23:19 · JFK 02:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.