本次案例实现目标
- 书籍基本数据
- 实现可视化图表
- 书籍评论数据
- 评论可以实现词云图
最基本思路流程: <通用>
一. 数据来源分析
1.只有当你知道你想要数据内容, 是来自于哪里的时候, 才能通过代码请求得到数据
2.打开 F12 开发者工具进行抓包分析
3.通过关键字进行搜索查询数据包是请求那个url地址
二. 代码实现步骤过程: 代码实现基本四大步骤
1.发送请求, 模拟浏览器对于url地址<刚刚分析得到的url地址>发送请求
2.获取数据, 获取服务器返回响应数据 —> 开发者工具里面 response
3.解析数据, 提取我们想要的数据内容 —> 书籍基本信息
4.保存数据, 把数据内容保存到表格里面
代码实现
获取书籍详情信息
发送请求
url = f'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1'
# 代码模拟浏览器发送请求 ---> headers请求头 <可以复制粘贴>
headers = {
# User-Agent 用户代理 表示浏览器基本身份标识
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发送请求
response = requests.get(url=url, headers=headers)
解析数据
# 转换数据类型 ---> 可解析对象
selector = parsel.Selector(response.text)
# 第一次提取, 获取所有li标签
lis = selector.css('.bang_list_mode li') # 返回列表
# for循环遍历, 把列表里面的元素一个一个提取出来
for li in lis:
title = li.css('.name a::attr(title)').get() # 标题/书名
recommend = li.css('.tuijian::text').get().replace('推荐', '') # 推荐
star = li.css('.star a::text').get().replace('条评论', '') # 评价
author = li.css('div:nth-child(5) a:nth-child(1)::attr(title)').get() # 作者
date = li.css('div:nth-child(6) span::text').get() # 出版日期
press = li.css('div:nth-child(6) a::text').get() # 出版社
price_r = li.css('.price .price_r::text').get() # 原价
price_n = li.css('.price .price_n::text').get() # 售价
price_e = li.css('.price_e span::text').get() # 电子书价格
href = li.css('.name a::attr(href)').get() # 详情页
dit = {
'标题': title,
'推荐': recommend,
'评价': star,
'作者': author,
'出版日期': date,
'出版社': press,
'原价'