你可曾看见过这样的句子:
“我爱的人也爱着我,对我来说这简直是个奇迹。”
又或者是:
“生活中若没有朋友,就像生活中没有阳光一样。”
再或者这样:
“我会抓着你,拉着你,救你,我不会放手,但是你要让我拉着你,知道吗?”
是一些非常有意思的句子,那如何来获取这些句子,并为自己所用呢!
第一、分析字段
首先我们要分析我们需要获取的网站,然后找到我们需要的字段,这里,我们提供两个网站供学习
https://api.fghrsh.net/hitokoto/rand/?encode=jsc&uid=3335
https://v1.hitokoto.cn/
然后我们来分析一下我们需要的字段。
看上面的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)
圆满搞定,来看成果吧!成功插入到数据库中
第五、完整代码
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)-隐形的弹窗