美文网首页
使用简书作为写作base,同步文章到hexo

使用简书作为写作base,同步文章到hexo

作者: luax | 来源:发表于2016-08-03 23:00 被阅读280次

    Why?

    简书把写作的门槛降到了最低,但是又不想放弃Blog.因此萌生了使用使用简书作为写作base,同步文章到hexo的想法.

    思路

    同步策略

    如果仅仅是同步文章,太简单了,对于一个开放性的网站,抓取就够了.但是如果能同步markdown就完美了,但是简书这边没有提供api.
    这里就两个方案

    1. 同步html,然后动态解析为markdown,复杂度较高
    2. 登陆,然后同步markdown,滑动验证码没研究过,感觉投入产出比相对较高,因此可以使用selenium做半自动登陆,下面是关键代码.
    
        @driver.get(BASE_URL + "/sign_in")
        @driver.find_element(:id, "sign_in_name").clear
        @driver.find_element(:id, "sign_in_name").send_keys username
        @driver.find_element(:id, "sign_in_password").clear
        @driver.find_element(:id, "sign_in_password").send_keys password
    
        #等待1000秒直到滑动验证码被验证成功,点击登录
        wait = Selenium::WebDriver::Wait.new(:timeout => 1000)
        wait.until { @driver.find_element(:class_name, "gt_ajax_tip").attribute('class').include? 'success' }
        @driver.find_element(:class_name, 'ladda-button').click
    
    

    这里选择了方案2

    登陆状态的保存可以将cookie写入到文件,这样就不需要每次都启动selenium重新登陆一次.
    同时,同步文章的时候考虑到如果使用selenium打开浏览器挨个请求一遍效率太低.所以在已有登陆cookie的情况下,将cookie写入到mechanize,使用mechanize做网络请求.

    图片的问题

    这是开发到后面的是发现的,简书的图片是动态cache访问的,也就是说没有永久存在的地址,所以这个需要先下过来.

    用到的工具

    • ruby
    • selenium
    • mechanize

    总结

    • 同样的思路可以用于登陆门槛较高的场景,比如说需要手机验证码登陆,等.
    • 简书将很多写作体验就简化了,比如标签的设定,SEO的设定等的.要接受这点,才能让你专心到写作上.其实想想也是,如果你不做自媒体,又何必关心搜索引擎是否会收录.
    • 花了点时间把想做的事做了,得益于这些前辈们开发了这么好的工具,让我如此简单的能达到我的目的,在此表示感谢.
    • 写作的目的,如果想多了,自然负担就多了.

    完整代码 gist

    相关文章

      网友评论

          本文标题:使用简书作为写作base,同步文章到hexo

          本文链接:https://www.haomeiwen.com/subject/hlqcsttx.html