文档章节

做一个座右铭工具每天激励自己

sharpcx
 sharpcx
发布于 2019/01/01 17:01
字数 585
阅读 127
收藏 0

想法

新年第一篇文章,最近做英语相关的服务做多了,发现有人在做座右铭的东西,我也有了个想法就是想做一个可以随机一个座右铭的工具,每天激励自己,或者看看别人怎么激励自己,顺便学英语。

实施

技术选型就是lumen+python(爬虫)+js bin+mongo

爬虫

首先我找了个网站,https://www.brainyquote.com/ ,国外的专门搜集和做UGC座右铭的,感觉还不错,内容丰富,质量很高,还能学英语 ,举例:I believe that if one always looked at the skies, one would end up with wings.

嗯。。。。怎么说呢,还是挺励志的。 那就是他了,

这个网站虽然有api但是不能直接爬,估计给参数做了加密,我懒,所以直接用selenium了,省的分析他的请求逻辑,就是效率不高,不过无所谓了,他这里ugc的内容不多,加上cron一分钟一次。 爬虫主要代码,这个页面是预加载的所以需要自己加个滑动功能window.scrollBy(0, 400);

print('start get')
driver.get('https://www.brainyquote.com/')
for i in list(range(50)):
    driver.execute_script("window.scrollBy(0, 400);")
    time.sleep(2)

html = driver.page_source
sel = Selector(text=html)
quotes = sel.xpath("//a[@title='view quote']")
for quote in quotes:
    save_motto(quote, 'all')

cron

1 * * * * /usr/bin/python3 /var/www/cx_motto/spider/moto_spider_list.py

客户端

客户端想了想没必要做页面所以就直接用js bin功能了 主要代码,很简单。

const options = {
  url: 'http://服务器地址/get_one',
  headers: {
    'User-Agent': 'request'
  }
};

function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
    const info = JSON.parse(body);
    console.log(info.data.content)
  }
}

服务端主要代码

服务端使用的lumen想想访问量不会太大哈~

public function getOne(){
        $count = DB::collection('mottos')->count();
        $skip=random_int(0, $count-1);
        $oneItem = DB::collection('mottos')->skip($skip)->first();
        return response()->json(['data'=>$oneItem]);
    }

打个包上传到npmjs

我的叫omotto,像我一样懒得可以直接用我的。

npm i omotto -g

运行效果

开放代码~

希望能帮到大家

https://gitee.com/sharpcx/omotto

star

© 著作权归作者所有

sharpcx
粉丝 23
博文 11
码字总数 10082
作品 0
海淀
程序员
私信 提问
加载中

评论(0)

真的没有几个人能做到!--如果你休息一天,实力就会倒退两天--2500多个日子里只有5天在休息!

天才=刻苦+偏执 “如果你休息一天,实力就会倒退两天。”这是菲尔普斯的座右铭,也是他教练送给他的至理名言。 一直以来,这位“神童”都坚持每天早上5点钟起床训练的习惯,从未间断。更让...

CZoneSoft
2008/08/14
0
0
微信公众号文章编写出高质量水平要注意什么?

  微信公众号文章编写出高质量水平要注意什么?微信公众号的日常工作之一就是去每天发布微信公众号文章,所以对于微信公众号文章来说,质量很重要哦,小编教您编写出高质量微信公众号文章哦...

公众开发运营官网
2018/05/28
0
0
自由职业者如何不断地自我激励

一位资深的自由职业者Amber曾经被问道:“当一位自由职业者长期没有得到任何的提升时,如何还能保持不断地自我激励?” Amber当时就被问住了。是啊,自由职业者该如何持续不断地保持自我激励...

2010/08/17
0
0
如何培养员工的成就感和工作积极性

对一个部门主管来说,也应该倾力去为下属创造这样一种平台,即要想方设法让下属从工作中获得成就感,并在必要的时候主动将成就感拿出与下属分享,而非一人独占所有成就。 人有了自信未必能够...

anziguoer
2014/06/06
550
4
培养好习惯是很难,但也有好方法

你一直希望培养一些好习惯,比如:: 早睡早起 每周读一本书 每天走一万步 凡事先做计划 早计划晚回顾 不抱怨 不说“不可能” 你知道,有了这些习惯,你就更可能拥有精彩充实的人生,可是尝试...

foruok
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jenkins Euleros镜像打包

一、下载需要的软件 mkdir jenkins_software && cd jenkins_softwarewget --no-check-certificate -q https://mirrors.huaweicloud.com/epel/RPM-GPG-KEY-EPEL-7 -O RPM-GPG-KEY-EPEL-7......

mbzhong
12分钟前
18
0
Spring Boot 如何以 Web 应用的方式启动

在 Spring Boot 启动的时候,在进程完成后会自动退出。 如何让 Spring Boot 以 Web 方式启动,并且进程不退出呢? 需要确定下 Web 的这个依赖是否在你的依赖中。 <dependency> ...

honeymoose
41分钟前
95
0
leetcode892(三维形体的表面积)--C语言实现

求: 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 示例 1: 输入:[[2]] 输出:...

拓拔北海
46分钟前
74
0
使用* args和** kwargs [重复] - Use of *args and **kwargs [duplicate]

问题: This question already has answers here : 这个问题已经在这里有了答案 : What does ** (double star/asterisk) and * (star/asterisk) do for parameters? **(双星号/星号)和*(......

技术盛宴
51分钟前
60
0
spring-boot之@ConfigurationProperties的使用

@ConfigurationProperties是什么? Using the @Value("${property}") annotation to inject configuration properties can sometimes be cumbersome, especially if you are working with mu......

书中迷梦
53分钟前
85
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部