盒子
盒子
文章目录
  1. 一起学游泳吧
  2. 缘起
  3. 具体实现
    1. 爬虫部分
    2. 静态页面生成部分
    3. 辅助构建部分
    4. 生成pdf部分
  4. 其它

游泳日报

一起学游泳吧

点我---->游泳日报<-----点我!

满满的热爱之心。

缘起

作为一个游泳的狂热爱好者。狂热到恨不得每天都泡在水里。

被诊断为支气管炎的时候

双腿因为爬山废掉路都快走不动的时候

天降暴雨电闪雷鸣马路成海的时候

都义无反顾地冲去泳池

泡在水里……

这样自由随性的游了一年。

后来,

和一群游起来非常优雅漂亮的半职业运动员们一起游了几次

或者十几次

抑或几十次,之后

我觉得得好好学习下。

于是通过伟大的互联网,

游泳梦工厂找到了很多

很多泳痴留下的武林秘笈。

欣喜异常!

但我觉得论坛上不好看……

于是诞生了把论坛上的帖子爬下来美化给自己看的愿望。

于是写了个爬虫……

后来,又想生成pdf,于是又折腾了下html转pdf。

后来,那阵经常刷知乎日报……于是又萌生了

制作游泳日报的想法。

最终写了一堆 脚本 来行使爬虫和静态页面生成的功能及其它辅助功能。

源码见https://github.com/reverland/topswim

静态页面见https://github.com/reverland/topswim/tree/gh-pages

具体实现

爬虫部分

不是啥优雅的方法。

使用lxmlrequests,把论坛页面的内容抓下来然后加上自定的内容。自己定义css文件。

静态页面生成部分

首先是具体内容页面。根据爬取的内容,加上自定义的html内容。可能用jinja2啊什么模板什么的应该更优雅些,我这就以一种quick和dirty的脚本方式实现。

其次是首页生成方式。读取rebuild.sh文件取最新的六条生成首页。

最后是总目录页的生成。读取rebuild.sh内容获取所有内容。

辅助构建部分

update.sh是主更新脚本。

update_index.pyupdate_toc.py分别更新首页和总目录页。

rebuild.sh负责重新构建所有内容页面。

生成pdf部分

使用weasyprint模块。

将视频替换为对应地址。

ps:开始使用xhtml2pdf模块,这东西支持中文字体要改,最关键的是中文不换行!!!即使最后按网上找来的设置什么wordwrap为cjk还是不换行。总之不推荐。

其它

很多似乎需要优化的地方。

  1. 把html文本和程序分离出来比较合适。
  2. 命令行参数处理用argparse啥的处理应该更加优雅
  3. 原谅我渣一样的前端水平。

好吧,本渣只是一个script kid……