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

2016-08-03  本文已影响280人  luax

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访问的,也就是说没有永久存在的地址,所以这个需要先下过来.

用到的工具

总结

完整代码 gist

上一篇 下一篇

猜你喜欢

热点阅读