由于刚上完了商业智能实训的课程,根据老师的要求我们做了一个完整的项目。
1. 项目要求与内容
项目具体要求:利用python爬取数据并进行清洗和预处理,将清洗后的数据存到数据库中,后端利用Java或是其他语言,最终利用Echarts实现数据可视化效果。
完成项目基本内容:
- 爬取豆瓣读书top250网页上相关信息;
- 对爬取保存下来的数据文件进行清洗和预处理;
- 将清洗好的数据导入数据库;
- 进行需求分析,对要实现的数据可视化效果进行分析,创建相应的数据库表并导入数据;
- 选用Java语言进行后端管理:
- 首先进行项目准备工作;
- 然后依次实现对实体类、持久层、业务层、web层、前端页面的开发。
2. 开发工具及相关技术
- pycharm——xpath
- navicat for MySQL
- Maria DB / MySQL
- eclipse——Ajax+Tomcat
3. python豆瓣读书top250数据爬取
3.1 数据爬取前期准备
3.1.1 分析url
这里只需要将start后面所传的数值进行修改即可。从0开始,每页25条书籍信息。
3.1.2 爬取信息
在这里我们要爬取的数据信息为
- 书名
- 链接
- 图片
- 国家
- 作者
- 出版社
- 出版时间
- 价格
- 星级
- 评分
- 评价人数
- 简介
3.1.3 分析网页源代码
以上图评价人数为例,这里运用到了xpath对数据信息进行定位,找到所在的标签。
3.2 数据爬取
这里不细节讲,下面的代码里面有具体内容和注释
# 1. 导入库包
import requests
from lxml import etree
from time import sleep
import os
import pandas as pd
import re
BOOKS = []
IMGURLS = []
# 2. 获取网页源代码
def get_html(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
# 异常处理
try:
html = requests.get(url, headers=headers)
# 声明编码方式
html.encoding = html.apparent_encoding
# 判断
if html.status_code == 200:
print('成功获取源代码')
# print(html.text)
except Exception as e:
print('获取源代码失败:%s' % e)
# 返回html
return html.text
# 3. 解析网页源代码
def parse_html(html):
html = etree.HTML(html)
# 每个图书信息分别保存在 class="indent" 的div下的 table标签内
tables = html.xpath("//div[@class='indent']//table")
# print(len(tables)) # 打印之后如果是25的话就是对的
books = []