目录

Python应用程序设计

豆瓣读书网站的数据爬取与分析

一、 项目背景与需求分析

二、数据抓取与分析

三、数据库设计

四、展示系统

一、 项目背景与需求分析

  1. 选题背景

本设计作品选取了豆瓣读书网站,主要爬取的是豆瓣读书的TOP250,通过爬取的数据进行对信息的进一步的数据分析。豆瓣读书TOP250网址为:https://book.douban.com/top250?start=0。

在这个设计中爬取了豆瓣读书的书名、书籍链接、书籍评分、评分人数、书籍作者、书籍的翻译者、出版社、出版日期、书籍的价格、一句话评价、书籍图片。通过爬取这些数据,可以使我们更加直观看到TOP250的图书整理数据,有效减少手动筛选统计的工作量。

  1. 数据抓取与分析

1.豆瓣图书数据

通过requests向页面发送请求,BeautifulSoup解析豆瓣读书网页数据,将爬取下来的数据利用pandas库存到csv,通过for循环依此爬取网站十页250条数据。由于爬取的内容板块较多,且并不是每一本书都有一句话评价、译者、作者,也并不是每一本书都只有一个价格,所以需要将特殊情况另外拿出分析。

当每一种情况都有时:

if len(info) == 5:
 book_author.append(info[0])
 book_translater.append(info[1])
 book_publisher.append(info[2])
 book_pub_year.append(info[3])
 book_price.append(str(info[4]))

当没有译者的时候:

elif len(info) == 4: 
 book_author.append(info[0])
 book_translater.append(None)
 book_publisher.append(info[1])
 book_pub_year.append(info[2])
 book_price.append(str(info[3]))

当有两种价格时:

elif len(info) == 6: 
 book_author.append(info[0])
 book_translater.append(info[1])
 book_publisher.append(info[2])
 book_pub_year.append(info[3])
 book_price.append(str(info[4]) + '/' + str(info[5]))

当没有作者时:

elif len(info) == 3: 
 book_author.append(None)
 book_translater.append(None)
 book_publisher.append(info[0])
 book_pub_year.append(info[1])
 book_price.append(str(info[2]))

当没有一句话评价时:

if book.select('.quote span'):
 book_comment.append(book.select('.quote span')[0].text)
else:
 book_comment.append(None)

爬取数据:




如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_数据库设计


图1

转换为excl文件:


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_数据库设计_02


图2

数据展示:


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_需求分析_03


图3

  1. 图标数据和数据库数据

该部分的取数通过运用正则表达式,找到要爬取的书名和评分,再通过控制爬取的网页页数,从而爬出前25本和250本图书的数据。


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_python_04


图4

  1. 排名前十名评分人物数据

该数据的取值是从“豆瓣图书.csv”中取出的,通过取出我们本来文件中的第一列书名与第九列评分,再控制一到十行,就可方便取出数据。

import pandas as pd
data = pd.read_csv("豆瓣图书.csv",header=None)
data = data.loc[1:10,[1,9]]
print(data)
data.to_csv("排名前十评分人数数据.csv")


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_数据_05


图6

  1. 爬取图片

由于之前已经将爬取的代码保存成了a.txt,那么只要在该文件里找到图片所在位置node1=soup.find_all(“img”,width=”90”),再将图片取出存入文件夹即可。

代码如图:


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_需求分析_06


图7

爬取结果:


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_数据_07


  1. 数据库设计

豆瓣读书爬虫系统在SQLite的平台上创建了一个名为books的数据库,在库中共创建了1张表。

信息表book,存储图书的信息,其设计如表1所示。

表1 图书表


表名

属性

类型

描述

备注

Book

name

String

书名

主码

pingfen

String

评分

not null


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_python_08


  1. 展示系统

1.登录页面


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_python_09


2.可视化部分图表展示


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_数据_10


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_数据库设计_11


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_Powered by 金山文档_12


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_Powered by 金山文档_13


如何用对爬取的豆瓣top250数据进行数据可视化 爬取豆瓣图书数据_python_14


  1. 参考