5 数据存储模块
主要完成数据存储到指定的Excel文件,为数据分析和可视化准备数据。
下一步将完善数据存储到sql数据库中
#数据存储模块
class DataSaver:
@staticmethod
def save_to_excel(data, filename):
data.to_excel(filename, index=False)
5 主程序
主程序主要完成以下功能:分析要爬取和各页信息获取详情页url、爬取各详情页信息、存储到Excel文档。
urls = [] # 所有解析的URL列表
list_all_data = [] # 定义所有的详情信息列表
# 定义开始抓取的序列号,从2开始9页【这个分析查看网页代码即可发现】假如加上首页共10页
start_num = [i for i in range(1, 10, 1)]
# 1组装要爬取的页面url
for start in start_num:
if start == 1:
url = 'https://category.dangdang.com/cp01.54.06.00.00.00.html'
else:
url = 'https://category.dangdang.com/pg{}-cp01.54.06.00.00.00.html'.format(start)
print('正在处理url:', url)
html = DataFetcher.fetch_data(url,headers) #获取页面数据
detail_list=DataParser.Parser_data_urllist(html)#爬取当前页列表详单URL
print(detail_list)
urls.extend(detail_list) #添加所有需详情解析的列表中
print('获取urls完毕',urls)
# 2开始解析详情页面,从所有URL中拉取详情信息
for number in range(len(urls)):
print(f'正在爬取第:{number}页数据,url:{urls[number]}')
html=DataFetcher.fetch_data(urls[number],headers) #获取页面数据
data = DataParser.Parser_data_detail(html, number)
data.append(urls[number])
list_all_data.append(data)
time.sleep(2) #可增加一点延时
print('解析结束')
# 3创建DataFrame并保存
df = DataFrame(list_all_data,
columns=['序号', '书名', '简介', '作者', '出版社',
'出版时间', '评论排名', '评论数','价格', '图书分类','分类','链接'])
DataSaver.save_to_excel(df,r'畅销程序设计类图书.xlsx')
print('数据已存储')
最终爬取存储效果如下图所示: