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

news/2024/7/19 10:47:48 标签: 爬虫, python, json

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

想法

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

实施

技术选型就是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

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

转载于:https://my.oschina.net/u/1240907/blog/2995732


http://www.niftyadmin.cn/n/836024.html

相关文章

移动端 解决键盘弹出后挡表单的问题

// 解决键盘弹出后挡表单的问题window.addEventListener(resize, function() {if(document.activeElement.tagName INPUT ||document.activeElement.tagName TEXTAREA) {window.setTimeout(function() {if(scrollIntoView in document.activeElement) {document.activeElemen…

SQL查询过滤:除自增主键id以外的列(除主键id外至少有2个列)数据重复的结果,重复的结果行只要id最小的那一行数据,且不可删除原始数据

题外话:如果这个表一共只有2列,id列和name列,很好解决: select distinct MIN(id) id,[name] from [t_people] group by [name] 下面开始正题: 如果这个表除主键id外,还有2至N个列,这N个列里面的…

PHP程序员的进阶之路

第1阶段:初级PHP程序员 重点:把LNMP搞熟练(核心是安装配置基本操作)目标:能够完成基本的LNMP环境安装,简单配置维护;能够做基本的简单系统的PHP开发;能够在PHP中型系统中支持某个PHP…

[转]VS20XX MVC 调试时 闪退 自动退出

解决办法:在VS中,工具>选项>项目和解决方案> Web项目“,取消选中”浏览器窗口关闭时停止调试器“。 参考:https://www.cnblogs.com/Violety/p/9405154.html 工具->选项-> 项目和解决方案->Web项目->浏览器…

TensorFlow实战学习笔记(14)------VGGNet

一、VGGNet:5段卷积【每段有2~3个卷积层最大池化层】【每段过滤器个数:64-128-256-512-512】 每段的2~3个卷积层串联在一起的作用: 2个33的卷积层串联的效果相当于一个55的卷积层,即一个像素会跟周围55的像素产生关联。【28*28的输…

C#Winfrom 运行程序自动添加桌面快捷方式(自定义ico图标)

一、添加引用,COM 里的 :Windows Script Host Object Model 二、创建桌面快捷方式帮助类 using IWshRuntimeLibrary; using System; using System.IO;namespace webpackge {public class ShortCutHelper{//需要引入IWshRuntimeLibrary,搜索W…

luoguP1865A%Bproblem

原题地址 思路 使用筛表法筛除1~m的素数&#xff0c;然后累计1~m的素数个数&#xff0c;最后输出sum[r]-sum[l-1]即可。 代码 #include<iostream> using namespace std; int n,m,l,r,sum[1000010]; bool a[1000010]; int main(){ cin>>n>>m; for(int i2;i*i&…

SQl给表字段批量更新指定长度的随机数,且每行数据都不一样

直接上SQL&#xff1a; --固定长度为4位随机数,即1000~9999之间的随机数: Select cast(rand(checksum(newid()))*(99999-10000)10000 as decimal(18,2))--批量更新表字段数据为随机数&#xff0c;且每个数据都不一样 update [BrandRebate] set [DailyRebate] cast(rand(chec…