作一個座右銘工具天天激勵本身

想法

新年第一篇文章,最近作英語相關的服務作多了,發現有人在作座右銘的東西,我也有了個想法就是想作一個能夠隨機一個座右銘的工具,天天激勵本身,或者看看別人怎麼激勵本身,順便學英語。html

實施

技術選型就是lumen+python(爬蟲)+js bin+mongopython

爬蟲

首先我找了個網站,https://www.brainyquote.com/ ,國外的專門蒐集和作UGC座右銘的,感受還不錯,內容豐富,質量很高,還能學英語 ,舉例:I believe that if one always looked at the skies, one would end up with wings.git

嗯。。。。怎麼說呢,仍是挺勵志的。 那就是他了,npm

這個網站雖然有api可是不能直接爬,估計給參數作了加密,我懶,因此直接用selenium了,省的分析他的請求邏輯,就是效率不高,不過無所謂了,他這裏ugc的內容很少,加上cron一分鐘一次。 爬蟲主要代碼,這個頁面是預加載的因此須要本身加個滑動功能window.scrollBy(0, 400);json

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')

cronapi

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想一想訪問量不會太大哈~dom

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,像我同樣懶得能夠直接用個人。ide

npm i omotto -g

運行效果

開放代碼~

但願能幫到你們工具

https://gitee.com/sharpcx/omotto

star

相關文章
相關標籤/搜索