美文网首页
使用简书作为写作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