python爬取豆瓣两千万图书简介信息:(五)数据库设计

这是全部的调试过程,我已经整理成为笔记,这里分享给大家:
python爬取豆瓣两千万图书简介信息:(一)目标API分析
python爬取豆瓣两千万图书简介信息:(二)简单python请求urllib2
python爬取豆瓣两千万图书简介信息:(三)异常处理
python爬取豆瓣两千万图书简介信息:(四)多进程并发
python爬取豆瓣两千万图书简介信息:(五)数据库设计
python爬取豆瓣两千万图书简介信息:(六)数据库操作类
python爬取豆瓣两千万图书简介信息:(七)代理IP
python爬取豆瓣两千万图书简介信息:(八)总结

数据库设计

爬取数据是为了存储,以供之后的分析使用。于是就要有相应的数据设计。

因为每次请求的数据结构大概都是固定的,而且,我也不想做太复杂太高端的数据设计,这样就尽量按照简单的来,所以,最终的数据库设计就是一本书的数据一条,而且较长的字段就抛弃掉。

一次请求获取数据示例:

https://api.douban.com/v2/book/10554308

请求结果如下:

{"rating":{"max":10,"numRaters":99295,"average":"9.2","min":0},"subtitle":"","author":["东野圭吾"],"pubdate":"2013-1-1","tags":[{"count":28691,"name":"东野圭吾","title":"东野圭吾"},{"count":13320,"name":"悬疑推理","title":"悬疑推理"},{"count":10713,"name":"日系推理","title":"日系推理"},{"count":9958,"name":"推理","title":"推理"},{"count":9058,"name":"日本文学","title":"日本文学"},{"count":8985,"name":"日本","title":"日本"},{"count":8460,"name":"小说","title":"小说"},{"count":7434,"name":"模糊式爱情","title":"模糊式爱情"}],"origin_title":"","image":"https://img1.doubanio.com\/mpic\/s29384019.jpg","binding":"精装","translator":["刘姿君"],"catalog":"","ebook_url":"https:\/\/read.douban.com\/ebook\/680843\/","pages":"538","images":{"small":"https://img1.doubanio.com\/spic\/s29384019.jpg","large":"https://img1.doubanio.com\/lpic\/s29384019.jpg","medium":"https://img1.doubanio.com\/mpic\/s29384019.jpg"},"alt":"https:\/\/book.douban.com\/subject\/10554308\/","id":"10554308","publisher":"南海出版公司","isbn10":"7544258602","isbn13":"9787544258609","title":"白夜行","url":"https:\/\/api.douban.com\/v2\/book\/10554308","alt_title":"","author_intro":"东野圭吾\n日本著名作家。\n1985年,凭《放学后》获第31届江户川乱步奖,开始专职写作;\n1999年,《秘密》获第52届日本推理作家协会奖;此后《白夜行》、《单恋》、《信》、《幻夜》先后入围直木奖。\n2005年出版的《嫌疑人X的献身》史无前例地将第134届直木奖、第6届本格推理小说大奖,以及年度三大推理小说排行榜第1名一并斩获;\n2008年,《流星之绊》获第43届新风奖。\n2009年出版的《新参者》获两大推理小说排行榜年度第1名;\n2012年,《浪矢杂货店的奇迹》获第7届中央公论文艺奖。","summary":"东野圭吾万千书迷心中的无冕之王\n周刊文春推理小说年度BEST10第1名\n本格推理小说年度BEST10第2名\n《白夜行》是东野圭吾迄今口碑最好的长篇杰作,具备经典名著的一切要素:\n一宗离奇命案牵出跨度近20年步步惊心的故事:悲凉的爱情、吊诡的命运、令人发指的犯罪、复杂人性的对决与救赎……\n-------------------------------------------------------------------\n1973年,大阪的一栋废弃建筑中发现一名遭利器刺死的男子。案件扑朔迷离,悬而未决。\n此后20年间,案件滋生出的恶逐渐萌芽生长,绽放出恶之花。案件相关者的人生逐渐被越来越重的阴影笼罩……\n“我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。\n凭借着这份光,我便能把黑夜当成白天。\n我从来就没有太阳,所以不怕失去。”\n“只希望能手牵手在太阳下散步”,这句象征本书故事内核的绝望念想,有如一个美丽的幌子,随着无数凌乱、压抑、悲凉的事件片段如纪录片一样一一还原,最后一丝温情也被完全抛弃,万千读者在一曲救赎罪恶的爱情之中悲切动容。","ebook_price":"15.00","series":{"id":"868","title":"新经典文库·东野圭吾作品"},"price":"CNY 39.50"}

忍痛抛弃掉最长的作品简介,将tag先还原成一维数据aaaa&bbbb&cccc 。

最后的数据设计如下:

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `books`
-- ----------------------------
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
  `id` int(10) NOT NULL,
  `isbn13` varchar(250) DEFAULT NULL,
  `publisher` varchar(30) DEFAULT NULL,
  `pages` varchar(20) DEFAULT NULL,
  `title` varchar(250) DEFAULT NULL,
  `image` varchar(250) DEFAULT NULL,
  `alt` varchar(250) DEFAULT NULL,
  `isbn10` varchar(250) DEFAULT NULL,
  `large_image` varchar(250) DEFAULT NULL,
  `subtitle` varchar(250) DEFAULT NULL,
  `price` varchar(250) DEFAULT NULL,
  `rating` varchar(250) DEFAULT NULL,
  `numRaters` varchar(230) DEFAULT NULL,
  `binding` varchar(250) DEFAULT NULL,
  `author` varchar(250) DEFAULT NULL,
  `tags` varchar(250) DEFAULT NULL,
  `pubdate` varchar(250) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS = 1;

仅有这些字段,也够我以后分析了。

屏幕快照 2017-11-08 下午2.19.48.png

以下是常用的SQL语句:

sql使用记录
ps:命令行比界面好用多了.主要是速度快
mac:~ caobo56$ mysql -u root -p
//进入数据库
mysql> show databases
//显示数据库
mysql> USE doubanbook
//进入指定库
mysql> show tables;
//显示库中的所有表
mysql> show create table books;
//显示建表语句,可用于检查表字段,编码,长度等
mysql> alter table books change title title varchar(20) CHARSET utf8;
//更改某一列的编码格式
mysql> alter table books default character set utf8;
//更改某表的编码格式
mysql> truncate table books;
//清空某表
mysql> select * from books;
//查找表中所有数据
mysql> select max(id) from books;
//查找表中最大的id
mysql> update books set summary=replace(summary,' ','');
//将book表中 summary 字段中的空格清除掉
mysql> alter table books drop summary;
//将book表中 summary 字段删除
mysql> select max(id) from books;
//查询id最大的值
mysql> select title from books where rating>9;
//查询rating大于9的title
mysql> select title,rating from books where rating>9;
//查询rating大于9的title和rating
mysql> select id,title,rating,numRaters from books where rating>9;
//查询rating大于9的title和rating
mysql> insert into books select * from book group by id;
//将book中的数据以id分组插入到books表里。
mysql> update thread_index set bookid = 1030897 where id = 3;
//查某一区间的id最大值

mysql> 
select id+1 from books a
where not exists(select * from books b where b.id = a.id + 1)
and id < (select MAX(id) from books) ;
//查询id不连续的位置,并不是查询出所有不连续的id

mysql> SELECT title FROM books WHERE title Like '%健康%';
模糊查询同”健康”相关的title

mysql> SELECT sum(DATA_LENGTH)/1024/1024+sum(INDEX_LENGTH)/1024/1024 FROM information_schema.TABLES where TABLE_SCHEMA='doubanbook';
//计算数据库的大小

mysql> INSERT INTO books (id, isbn13, publisher, pages, title, image, alt, isbn10, subtitle, price, binding,pubdate, large_image, rating, numRaters,tags, author) VALUES (1715056,"9787533913311","浙江文艺出版社","255","\"一九九七\"之夜","https://img3.doubanio.com\/mpic\/s6250116.jpg","https:\/\/book.douban.com\/subject\/1715056\/","7533913310","","12.40元","平装","2000-2","https://img3.doubanio.com\/lpic\/s6250116.jpg","0.0","0","","陶然");
//插入语句,带双引号的需要加\转译符

连表查询

SELECT works.id,works.title,works.author_id,works.author,works.dynasty,works.kind,works.kind_cn,works.foreword,works.content,works.intro,works.layout,dynasties.name,dynasties.start_year AS worksDy
FROM works INNER JOIN dynasties
ON works.dynasty = dynasties.name
ORDER BY dynasties.start_year;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容