# omotto **Repository Path**: sharpcx/omotto ## Basic Information - **Project Name**: omotto - **Description**: 一个随机座右铭的项目,开心就好 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-01-01 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 想法 最近做英语相关的服务做多了,发现有人在做座右铭的东西,我也有了个想法就是想做一个可以随机一个座右铭的工具,每天激励自己,或者看看别人怎么激励自己。 ## 实施 技术方案就是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);` ``` python 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 ``` 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://oscimg.oschina.net/oscnet/4fd03c2a65569aeac238cbba3db00b965ab.jpg) ## 开放代码~