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

写了一个公众号转 RSS 的网站

  •  5
     
  •   berry10086 · 2015-06-20 13:52:36 +08:00 · 11894 次点击
    这是一个创建于 3474 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://weirss.me
    刚开始做,可以直接在首页搜索添加,也可以通过openid添加
    数据来自搜狗微信搜索

    第 1 条附言  ·  2015-06-22 22:06:36 +08:00
    爬虫源代码在这里https://github.com/iberryful/weixin_sogou
    第 2 条附言  ·  2015-06-22 22:06:59 +08:00
    67 条回复    2016-12-31 00:01:06 +08:00
    lilydjwg
        1
    lilydjwg  
       2015-06-20 15:30:09 +08:00
    试了几个,都是「未收录」啊……
    berry10086
        2
    berry10086  
    OP
       2015-06-20 16:14:40 +08:00 via Android
    你点下添加就收录了
    berry10086
        3
    berry10086  
    OP
       2015-06-20 16:14:52 +08:00 via Android
    @lilydjwg 点下添加就收录了
    wittyfox
        4
    wittyfox  
       2015-06-20 16:27:01 +08:00
    很有意思的样子。
    lilydjwg
        5
    lilydjwg  
       2015-06-20 16:58:58 +08:00
    @berry10086 啊,白色的背景上的白色的字我怎么看得到~
    lilydjwg
        6
    lilydjwg  
       2015-06-20 17:00:25 +08:00
    另外「点击查看」不要复用之前的窗口呀,再开个新的多好。
    berry10086
        7
    berry10086  
    OP
       2015-06-20 17:02:19 +08:00 via Android
    @lilydjwg 添加是蓝色背景白色字呀 点击查看那里我记下来了,回头改掉
    lilydjwg
        8
    lilydjwg  
       2015-06-20 17:05:40 +08:00
    @berry10086 鼠标移过去的时候确实是浅蓝,太浅了没注意到……
    berry10086
        9
    berry10086  
    OP
       2015-06-20 17:07:18 +08:00 via Android
    @lilydjwg 谢谢你的反馈,你用的什么浏览器?
    lilydjwg
        10
    lilydjwg  
       2015-06-20 18:25:24 +08:00
    @berry10086 火狐 38.0.5。
    imink
        11
    imink  
       2015-06-20 20:32:25 +08:00
    能简单透露一下实现的技术手段么?
    ulic95
        12
    ulic95  
       2015-06-20 20:39:57 +08:00
    好东西!
    berry10086
        13
    berry10086  
    OP
       2015-06-20 21:32:08 +08:00
    @imink 核心就是抓搜狗的数据,但是搜狗有些页面是js生成的,对于js生成的页面,用selenium+phantomjs 抓取,其他内容直接用requests抓,但经常会触发反爬虫,所以要经常换cookies
    berry10086
        14
    berry10086  
    OP
       2015-06-20 22:43:52 +08:00
    @lilydjwg 修复了
    ggswolf
        15
    ggswolf  
       2015-06-20 23:18:54 +08:00
    蛮不错的感觉~~
    Kai
        16
    Kai  
    MOD
       2015-06-20 23:30:32 +08:00 via iPhone
    moved to /go/create
    lilydjwg
        17
    lilydjwg  
       2015-06-21 00:24:32 +08:00
    @berry10086 这回不会看漏了,赞!
    catface
        18
    catface  
       2015-06-21 00:50:00 +08:00
    安卓上用什么rss阅读器好呢
    berry10086
        19
    berry10086  
    OP
       2015-06-21 00:59:17 +08:00 via Android
    @catface 我以前用feedly 现在用inoreader
    bornichildren
        20
    bornichildren  
       2015-06-21 01:52:16 +08:00
    感谢。以前有人也做过,不过后来貌似被搜狗给干了。希望这个能长久
    berry10086
        21
    berry10086  
    OP
       2015-06-21 07:38:59 +08:00 via Android
    @bornichildren 目前跑了一个月,还没事,希望能坚持很久
    ulic95
        22
    ulic95  
       2015-06-21 12:14:06 +08:00
    @berry10086 很多抓不了,是搜狗的问题?
    berry10086
        23
    berry10086  
    OP
       2015-06-21 13:02:59 +08:00 via Android
    @ulic95 是的,有的公众号搜狗搜不到,搜狗有的,我基本都能抓到
    zangbob
        24
    zangbob  
       2015-06-21 15:58:41 +08:00
    已感谢+收藏。。。希望能用的久一些。。。不要像其他几位同学的作品,或者不能用了,或者打不开了。。
    djyde
        25
    djyde  
       2015-06-21 18:12:20 +08:00
    关于能坚持多久的问题 我觉得楼主可以尝试做成 open source,让每个人都可以搭建自己的爬虫
    berry10086
        26
    berry10086  
    OP
       2015-06-21 18:35:30 +08:00
    @djyde 目前还在改进中,过段时间会开源
    sinosure
        27
    sinosure  
       2015-06-21 19:20:14 +08:00
    @berry10086 不错啊,改版了。在线看的界面还有很多潜力,加上多用户支持,然后自动根据公账号汇聚timeline更新,这样rss都不需要用了,直接在线看,顺带再支持收藏到pocket、印象笔记,齐活
    berry10086
        28
    berry10086  
    OP
       2015-06-21 19:57:21 +08:00 via Android
    @sinosure 在线看的那个界面还没有做,目前还只是导航,未来会先改进这个界面。然后优化抓取算法,现在是简单粗暴的4小时全部更新一次,想加入根据公众号更新频率动态调整抓取频率的功能,可以节省很多资源。抓取这块稳定后,就可以按你说的做在线阅读啦。前端不太懂,还有好多东西要学。
    wogong
        29
    wogong  
       2015-06-21 21:31:15 +08:00
    感谢。

    另外对比了一下搜狗的微信搜索和微信公众帐号之间的差异,发现二者并不同步。搜狗上槽边往事的最新文章是0512,而公众帐号实际是0524,少了三篇文章。

    继续对公众帐号内容的封闭性失望。
    berry10086
        30
    berry10086  
    OP
       2015-06-21 21:38:01 +08:00 via Android
    @wogong 是的,搜狗的数据滞后,二十多很多公众号的内容在搜狗搜不到
    sinosure
        31
    sinosure  
       2015-06-21 23:49:28 +08:00
    @berry10086 在线读每篇公众号内容的阅读界面基本没必要动,就目前公众号原汁原味即可,条目导航页面目前我在eink下看很舒服,比sougou的来说对eink很友好,导航界面有第三方收藏功能就ok了。
    抓取策略的确是可以的,扫描公众号列表里面的更新时间,然后只增量更新就好了。但愿搜狗手下留情少制造障碍
    berry10086
        32
    berry10086  
    OP
       2015-06-22 00:18:03 +08:00 via Android
    @sinosure 谢谢你的建议,我先试着改进抓取策略。担心收录帐号多了以后,频繁访问搜狗会被封,目前确实是增量更新,每个公众号最多缓存20篇文章在本地,旧文章只保留链接和标题归档
    ulic95
        33
    ulic95  
       2015-06-22 07:00:29 +08:00
    @berry10086 这个网站倒是能抓取大部分: http://chuansong.me/ 不知道是不是纯手动录入的。
    berry10086
        34
    berry10086  
    OP
       2015-06-22 23:56:58 +08:00 via Android
    @ulic95 在搜狗微信搜索上线前,传送门就有了,应该是自动采集的,但是不知道作者如何实现的
    sinosure
        35
    sinosure  
       2015-06-23 13:11:51 +08:00
    @berry10086 会不会是模仿微信操作实现的呢,不通过搜狗,直接从微信内抓?
    berry10086
        36
    berry10086  
    OP
       2015-06-23 13:30:03 +08:00
    @sinosure 有可能,搜狗没有的账号,传送门也有,而且还能获取点赞和阅读数,应该是在微信里抓的。
    http://werank.cn/
    sinosure
        37
    sinosure  
       2015-06-25 14:37:37 +08:00
    @berry10086 可否将parse_list输出结果里面再增加一项,每个条目的更新日期,这样有利于增量更新内容
    berry10086
        38
    berry10086  
    OP
       2015-06-25 14:44:43 +08:00 via Android
    @sinosure js生成的页面没有时间戳,所以得不到精确到分钟的更新时间,只能得到日期。想要获取更新时间,需要通过分析js调用的接口才能实现,但是接口经常变化,维护成本高
    sinosure
        39
    sinosure  
       2015-06-25 15:46:25 +08:00
    @berry10086 到日期足够了,我看到日期了,但不知道怎么取到那个p标签的值。。。
    berry10086
        40
    berry10086  
    OP
       2015-06-25 16:33:18 +08:00
    @sinosure 日期我抓取了呀
    berry10086
        41
    berry10086  
    OP
       2015-06-25 16:34:33 +08:00
    @berry10086 不对,list这里没有抓日期,我是在文章那个页面抓的,增量更新我是根据标题判断的,没有根据日期判断
    berry10086
        42
    berry10086  
    OP
       2015-06-25 16:39:17 +08:00
    @sinosure
    ls = soup.select('#wxbox .txt-box')
    link_list = []
    for item in ls:
    item_dict = {}
    item_dict['date'] = ls.select('p .s-p')

    这样应该可以,我没有测试
    sinosure
        43
    sinosure  
       2015-06-25 16:47:24 +08:00
    @berry10086 可能误解了我的意思,parse_essay方法有获取日期,但parse_list方法好像只取了标题和链接,如果也有日期输出就好了,不用去抓内容就能获得列表每个篇目的更新日期。
    然后生成一个没有正文的rss,看的时候直接跳去微信原始页面看,省的直接看rss时图片被干掉
    sinosure
        44
    sinosure  
       2015-06-25 16:50:13 +08:00
    @berry10086 我现在看公众号的思路是这样的,在ttrss下订阅多个公众号,然后ttrss可以自动汇聚近期更新的篇目到最新更新文章下,这些最新更新文章形成一个新的feed,这样只要订阅这一个feed就行了,混搭各种更新。
    berry10086
        45
    berry10086  
    OP
       2015-06-25 16:52:47 +08:00 via Android
    @sinosure 也就是说,你想要一个不是全文输出的rss?
    berry10086
        46
    berry10086  
    OP
       2015-06-25 16:54:49 +08:00 via Android
    @sinosure 我之前是在kindle4rss里把来自微信的rss添加到一个文件夹里,但是这样在kindle上看文章列表时看不到文章出处,后来就改成都放在根目录了,可以看到出处。
    sinosure
        47
    sinosure  
       2015-06-25 16:59:27 +08:00
    @berry10086 有全文当然好啊,全文的文字部分留在ttrss里面,可以作为存档,还支持全文检索。
    这不是担心抓全文超时么,有些再利用公众号内容的时候只需要搭建类似你http://weirss.me/account/sagacity-mac/的效果就好了,在线直接看
    我这想法跟你的区别是,你是基于一个公众号生成文章列表,我是利用ttrss抽取多个公众号内容合并最新更新,做了个多个公众号的最新文章列表
    berry10086
        48
    berry10086  
    OP
       2015-06-25 18:07:53 +08:00 via Android
    @sinosure 抓全文不会超时,非常快,瓶颈在于搜狗,有反爬虫
    welly
        49
    welly  
       2015-06-25 19:02:39 +08:00
    好像挺不错的啊,就是me网址咋打不开
    berry10086
        50
    berry10086  
    OP
       2015-06-25 19:48:23 +08:00
    @welly 你用的什么网络?是dns解析不了吗?
    welly
        51
    welly  
       2015-06-25 20:27:27 +08:00
    @berry10086
    Service Unavailable

    The server is temporarily unable to service your request. Please try again later.
    Reference #60.27b3d208.6baad6e8.1435235216

    江西·移动
    kevin1452
        52
    kevin1452  
       2015-06-26 15:03:17 +08:00
    请问 屏蔽的情况怎么样?我之前强行抓会屏蔽,后来生成cookie相对稳定了,但还是容易被屏蔽
    berry10086
        53
    berry10086  
    OP
       2015-06-26 16:59:36 +08:00 via Android
    @kevin1452 因为解析文章列表是用phantomjs实现的,所以很少被屏蔽。另外,10分钟更换一次cookies
    kevin1452
        54
    kevin1452  
       2015-06-27 19:55:36 +08:00
    @berry10086 我开始只是访问了最后那个固定连接,之前的js并没有执行,所以屏蔽的比较快,后来执行了js之后相对好很多,,, 每次访问间距也拉大了很多.. 但是跑的时间长了 还是会屏蔽一些时间之后 再解封
    berry10086
        55
    berry10086  
    OP
       2015-06-27 23:28:15 +08:00 via Android
    @kevin1452 经常换cookies就好了,我现在是10分钟更新一次cookies,效果不错
    berry10086
        56
    berry10086  
    OP
       2015-06-27 23:29:16 +08:00 via Android
    @berry10086 我测试过,不间断抓取大概30次就会触发反爬虫。
    14
        57
    14  
       2015-06-28 16:47:10 +08:00
    感谢 这东西主要是维护麻烦
    hao312
        58
    hao312  
       2015-07-16 15:17:00 +08:00
    出问题了? RSS这2天没不更新
    berry10086
        59
    berry10086  
    OP
       2015-07-16 17:32:47 +08:00
    @hao312 ip被搜狗封了
    riccar
        60
    riccar  
       2015-07-19 18:17:43 +08:00
    如果能看被屏蔽的就更好了,比如侠客岛的文章,经常有被举报屏蔽的,回头想看看不了
    zhangyueru
        61
    zhangyueru  
       2015-07-23 14:27:35 +08:00
    有新版本发布了吗
    zhangyueru
        62
    zhangyueru  
       2015-07-24 12:20:02 +08:00
    @berry10086 ? 求代码共享
    berry10086
        63
    berry10086  
    OP
       2015-07-27 11:27:49 +08:00 via Android
    @zhangyueru 最近太忙,过一段时间就会共享出来
    zhangyueru
        64
    zhangyueru  
       2015-07-31 16:25:35 +08:00
    期待中。。。。
    SurDark
        65
    SurDark  
       2015-08-09 07:19:03 +08:00
    最近抓取的rss不更新了,还会修复吗?谢谢……
    sinosure
        66
    sinosure  
       2015-09-07 13:47:35 +08:00
    搜狗又变招了,获取的 url 不再是固定的了,要多爬一步了
    knightliao
        67
    knightliao  
       2016-12-31 00:01:06 +08:00
    http://100weidu.com 支持微信公众号 rss 订阅,欢迎使用,我会一直维护
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3256 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:05 · PVG 08:05 · LAX 16:05 · JFK 19:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.