你距离女朋友其实只差一个幽默的句子,python教你如何快速将有趣的句子收归数据库

你距离女朋友其实只差一个幽默的句子,python教你如何快速将有趣的句子收归数据库

大家好,又见面了,我是全栈君。

你可曾看见过这样的句子:

“我爱的人也爱着我,对我来说这简直是个奇迹。”

又或者是:

“生活中若没有朋友,就像生活中没有阳光一样。”

再或者这样:

“我会抓着你,拉着你,救你,我不会放手,但是你要让我拉着你,知道吗?”

是一些非常有意思的句子,那如何来获取这些句子,并为自己所用呢​!

第一、分析字段

首先我们要分析我们需要获取的网站,然后找到我们需要的字段,这里,我们提供两个网站供学习​

https://api.fghrsh.net/hitokoto/rand/?encode=jsc&uid=3335
https://v1.hitokoto.cn/

然后我们来分析一下我们需要的字段。

你距离女朋友其实只差一个幽默的句子,python教你如何快速将有趣的句子收归数据库

看上面的json,我们需要获取的字段分别是,hitokoto,source,author,id

类似的,当我们去分析第二个网站时也是​同样的操作。

第二、建立数据库表

我们能获取到字段数据之后,我们需要分析我们的表如何显示,如何储存的问题​。

因此我们先创建数据库​。防止出现表情,我们采用utf8mb4

'''创建数据库'''
CREATE DATABASE `csdn_article` CHARACTER SET 'utf8mb4';

接着,我们来创建数据表​:

'''创建数据表'''
CREATE TABLE `linking_blink`  (
  `id` int unsigned NOT NULL,
  `linking_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'id',
  `text` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '内容',
  `auther` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '作者',
  `source` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源',
  `from` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '渠道',
  `passed` int(0) NULL DEFAULT NULL COMMENT '0,否,1,是   是否发送',
  `insert_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0),
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

第三、插入数据库​方法

我们已经建立好表了,我们接下来需要创建插入数据的方案,方便我们插入,查询数据时调用​。

#建立链接池,为之后做准备,数据库需要改为自己的数据库。
POOL = PooledDB(
    creator=pymysql,  maxconnections=0,  mincached=3, maxcached=0,maxshared=3,
    blocking=True,  maxusage=None, setsession=[], ping=0,
    host='127.0.0.1',port=3306,user='root',password='root',database='csdn_article',charset='utf8mb4')
​
#插入数据
def insert_text(linking_id,text,auther,source,from_w):
    db = POOL.connection()
    conn = db.cursor()
    conn.execute("INSERT INTO `linking_blink`(`linking_id`, `text`, `auther`,`source`, `from`, `passed`) VALUES ('%s', '%s', '%s', '%s','%s', 0);"%(linking_id,text,auther,source,from1))# 使用execute方法执行SQL语句
    data=db.commit()
    db.close()
    return data
#按照内容查询数据
def select_text(text,from_w):
    db = POOL.connection()
    conn = db.cursor()
    conn.execute("SELECT * FROM `linking_blink` WHERE `text` = '%s' AND `from` = '%s' LIMIT 0, 1;"%(text,from_w))# 使用execute方法执行SQL语句
    data = conn.fetchall()
    db.close()
    return data
#按照id查询数据
def select_linking_id(linking_id,from_w):
    db = POOL.connection()
    conn = db.cursor()
    conn.execute("SELECT * FROM `linking_blink` WHERE `linking_id` = '%s' AND `from` = '%s' LIMIT 0, 1;"%(linking_id,from_w))# 使用execute方法执行SQL语句
    data = conn.fetchall()
    db.close()
    return data

第四、获取网站数据

我们已经准备好数据库,插入​了,那我们来获取网站数据并插入到数据库中。

headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36'}
def fghrsh(from_w="fghrsh"):
    response=requests.get(url="https://api.fghrsh.net/hitokoto/rand/?encode=jsc&uid=3335",headers=headers)
    if select_linking_id(response.json()["id"],from_w)==():
        if response.json()["source"] == "":
            insert_text(response.json()["id"],response.json()["hitokoto"],response.json()["author"],response.json()["author"],from_w)
        else:
            insert_text(response.json()["id"],response.json()["hitokoto"],response.json()["author"],response.json()["source"],from_w)
def hitokoto(from_w="hitokoto"):
    response=requests.get(url="https://v1.hitokoto.cn/",headers=headers)
    if select_linking_id(response.json()["id"],from_w)==():
        insert_text(response.json()["id"],response.json()["hitokoto"],response.json()["from_who"],response.json()["from"],from_w)

圆满搞定,来看成果吧​!成功插入到数据库中

你距离女朋友其实只差一个幽默的句子,python教你如何快速将有趣的句子收归数据库

第五、完整代码

import os,random
import json
import requests
import pymysql
from dbutils.pooled_db import PooledDB
​
#链接池
POOL = PooledDB(
    creator=pymysql,  maxconnections=0,  mincached=3, maxcached=0,maxshared=3,
    blocking=True,  maxusage=None, setsession=[], ping=0,
    host='127.0.0.1',port=3306,user='root',password='root',database='csdn_article',charset='utf8mb4')
​
def insert_text(linking_id,text,auther,source,from_w):
    db = POOL.connection()
    conn = db.cursor()# 使用cursor()方法获取操作游标
    conn.execute("INSERT INTO `linking_blink`(`linking_id`, `text`, `auther`,`source`, `from`, `passed`) VALUES ('%s', '%s', '%s', '%s','%s', 0);"%(linking_id,text,auther,source,from1))# 使用execute方法执行SQL语句
    data=db.commit()# 使用 fetchone() 方法获取一条数据
    db.close()
    return data
​
def select_text(text,from_w):
    db = POOL.connection()
    conn = db.cursor()# 使用cursor()方法获取操作游标
    conn.execute("SELECT * FROM `linking_blink` WHERE `text` = '%s' AND `from` = '%s' LIMIT 0, 1;"%(text,from_w))# 使用execute方法执行SQL语句
    data = conn.fetchall()# 使用 fetchone() 方法获取一条数据
    db.close()
    return data
​
def select_linking_id(linking_id,from_w):
    db = POOL.connection()
    conn = db.cursor()# 使用cursor()方法获取操作游标
    conn.execute("SELECT * FROM `linking_blink` WHERE `linking_id` = '%s' AND `from` = '%s' LIMIT 0, 1;"%(linking_id,from_w))# 使用execute方法执行SQL语句
    data = conn.fetchall()# 使用 fetchone() 方法获取一条数据
    db.close()
    return data
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36'}
def fghrsh(from_w="fghrsh"):
    response=requests.get(url="https://api.fghrsh.net/hitokoto/rand/?encode=jsc&uid=3335",headers=headers)
    if select_linking_id(response.json()["id"],from_w)==():
        if response.json()["source"] == "":
            insert_text(response.json()["id"],response.json()["hitokoto"],response.json()["author"],response.json()["author"],from_w)
        else:
            insert_text(response.json()["id"],response.json()["hitokoto"],response.json()["author"],response.json()["source"],from_w)
def hitokoto(from_w="hitokoto"):
    response=requests.get(url="https://v1.hitokoto.cn/",headers=headers)
    if select_linking_id(response.json()["id"],from_w)==():
        insert_text(response.json()["id"],response.json()["hitokoto"],response.json()["from_who"],response.json()["from"],from_w)
if __name__ == '__main__':
    for i in range(20):
        fghrsh()
        hitokoto()

相关推荐​:

浏览器插件,轻松-快速获取网站源代码

python-tkinter 实现各种个样的撩妹鼠标拖尾

过分了,别人用来做桌面应用开发,这家伙却用来撩妹(6)-隐形的弹窗

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111344.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • mac navicat prenium 15.0.29 激活码[免费获取]

    (mac navicat prenium 15.0.29 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • svn配置帐号密码「建议收藏」

    svn配置帐号密码「建议收藏」svn/config下authz:###Thisfileisanexampleauthorizationfileforsvnserve.###Itsformatisidenticaltothatofmod_authz_svnauthorization###files.###Asshownbeloweachsectiondefinesauth…

  • Qt多线程通信

    Qt多线程通信简述:1>Qt线程间共享数据主要有两种方式:1)使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的。2)使用singal/slot机制,把数据从一个线程传递到另外一个线程。第一种方法在各个编程语言都普遍使用,而第二种方法是QT的特有的,本文主要介绍第二种。2>

  • SSRF漏洞学习

    SSRF漏洞学习SSRF漏洞原理SSRF(Server-SideRequestForgery:服务器端请求伪造)是一个由攻击者构造请求,在目标服务端执行的一个安全漏洞。攻击者可以利用该漏洞使服务器端向攻击者构造的任意域发出请求,目标通常是从外网无法访问的内部系统。简而言之就是以服务器的身份来执行请求。常见利用方式伪协议读取文件伪协议读取文件,在SSRF中常用的伪协议就是file:///协议/?url=file:///var/www/html/flag.php内网访问我们从目标主机内

  • VMware 搭建私有云

    VMware 搭建私有云我们的目的是在VMwareworkstation上安装Centos7系统,并配置用远程桌面访问虚拟机。在虚拟机上安装Centos7首先按照老师给出的博客(VirtualBox安装Centos7笔记)进行安装。博主使用的是virtualBox,但VMware的操作也是基本相同,并且不需要单独设置虚拟机远程访问模式。安装完后我遇到了问题ifconfig:…

  • 大端存储模式和小端存储模式_vs2013大端小端如何设置

    大端存储模式和小端存储模式_vs2013大端小端如何设置首先要记住:读数据永远是从低地址开始的!!!正文开始什么是低地址、高地址?地址编号小的是低地址,地址编号大的是高地址什么是数据的低位、高位?小端模式数据的低位放在低地址空间,数据的高位放在高地址空间简记:小端就是低位对应低地址,高位对应高地址存放二进制数:1011-0100-1111-0110-1000-1100-0001-0101注意注意:我们在存放的时候是以一个存储单元为单位来存放,存储单元内部不需要再转变顺序啦!!就例如下面的低位0001-0101存放在0号地址,我们不需要.

    2022年10月22日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号