你可曾看見過這樣的句子:
“我愛的人也愛著我,對我來說這簡直是個奇跡,”
又或者是:
“生活中若沒有朋友,就像生活中沒有陽光一樣,”
再或者這樣:
“我會抓著你,拉著你,救你,我不會放手,但是你要讓我拉著你,知道嗎?”
是一些非常有意思的句子,那如何來獲取這些句子,并為自己所用呢?!
第一、分析欄位
首先我們要分析我們需要獲取的網站,然后找到我們需要的欄位,這里,我們提供兩個網站供學習?
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)-隱形的彈窗
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300999.html
標籤:其他
