您的位置:首页 > 编程语言 > Python开发

Python:Sqlite3+Navicat数据库练习(某诗词API接口)

2019-03-06 22:50 246 查看
版权声明:随便整,没版权 https://blog.csdn.net/bosslay/article/details/88261841

新手练手,大牛勿喷,欢迎交流

验证接口出了点问题,返回的数据并不是按搜索的人名,发博时接口已经502,后续会跟进。

import sqlite3##调用数据库
import requests#调用请求库
import os#调用文件管理库
import time##调用时间管理库
import xlwt##调用制表库
print('☢☣☢☣☢☣☢☣☢☣☢☣☢☣ ✘CAUTION✘ ☣☢☢☣☣☢☣☢☣☢☣☣☢☣☢☣')###装饰
print('☠☛每次执行爬虫需要更改数据库表名,按照数字往下排列,以防覆盖原有数据库并且报错!☚☠')
base_file = 'Ancient_poetry'#建立初始文件夹
if not os.path.exists(base_file):#判断是否原来就存在初始文件夹
os.mkdir(base_file)##如无,则建立
workbook = xlwt.Workbook(encoding='utf-8')#建立工作簿
sheet = workbook.add_sheet('Ancient_poetry')##创建列表头
count = 0 ##声明一个变量为0 以便在后续写入表格时能用到这个变量
sheet.write(0,0,'诗词作者')##写入表头
sheet.write(0,1,'诗词名称')##写入表头
sheet.write(0,2,'诗词内容')##写入表头
db = sqlite3.connect('Poetry.db')##首先连接数据库!!
cursor = db.cursor()###启动游标!!
create_sql = "CREATE TABLE IF NOT EXISTS Ancient_poetry05 (ID INTEGER PRIMARY KEY,诗词名称 VARCHAR (20),诗词内容 VARCHAR (200),诗词作者 VARCHAR (20))"###创建数据表的sql语句
cursor.execute(create_sql)#执行sql语句!!
poetry_author = input('请选择您要查询的诗词作家:')#获取输入的作家名称
headers = {
'User_Agent':'ozilla/5.0 (compatible; WOW64; MSIE 10.0; Windows NT 6.2)'
}###请求头(非真实)
print('唤醒爬虫...')##你懂得
url = f'https://api.apiopen.top/likePoetry?name={poetry_author}'#将作家名称嵌入到url地址当中
response = requests.get(url,headers=headers).json()#请求返回json格式的数据
results = response.get('result')##调用get函数提取字典里key为result的value,得到一个列表
print(f"嗅探到'{poetry_author}'的诗词共{len(results)}条,开始解析数据..")
for idx,poetry in enumerate(results):#####枚举###
p_title = poetry['title']###诗词名称
time.sleep(1)###设置间隔函数1秒
p_content = poetry['content']###诗词内容
p_authors = poetry['authors']####诗词作者
print('▁▂▃▄▅▆▇▉█')###一把大刀,稍安勿躁
print(f'正在将第{idx}首诗词《{p_title}》写入数据库..')##输出语句
insert_sql = f"INSERT INTO Ancient_poetry05(ID,诗词名称,诗词内容,诗词作者) VALUES({idx},'{p_title}','{p_content}','{p_authors}')"###向数据库插入数据,sql语句
cursor.execute(insert_sql)##执行插入数据的sql语句
db.commit()##提交执行
count += 1### 将这个变量应用在写入列表时的‘行’当中
print(f'正在写入《{p_title}》内容到表格...')##输出语句
sheet.write(count,0,p_authors)#写入诗词作者
sheet.write(count,1,p_title)#写入诗词名称
sheet.write(count,2,p_content)#写入内容
workbook.save(f'{base_file}/{poetry_author}.xls')##保存表格到指定路径
print('数据保存完成!')
cursor.close()###关闭游标
db.close()###关闭数据库,这个就不解释了吧

ps:
##end()

图片是截取的之前的数据库

同时写入了EXEL表格,仅供练习!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: