前言
咳咳,一个月没更新的我 咱就是说 之前账号密码忘记了 你们信吗
话不多说 ,咱先开始研究研究数据分析吧
环境使用
在开始之前,安装好我们的代码编辑器和环境是非常重要的
- Python 3.8
- pycharm --> 编辑器
- jupyter notebook --> 数据分析编辑器
模块使用
- requests >>> pip install requests 数据请求
- parsel >>> pip install parsel 数据解析
- csv <表格文件> 内置模块 保存数据
安装第三方模块方法:win + R 输入cmd 输入安装命令 pip install 模块名
(如果你觉得安装速度比较慢, 你可以切换国内镜像源)
案例基本思路
- 明确需求 <完成>
明确采集的网站是什么?
明确采集的数据是什么? - 发送请求, 模拟浏览器对url地址发送请求
- 获取数据, 获取网页源代码
- 解析数据, 提取我们想要的数据内容 <书籍基本信息>
- 保存数据, 保存表格文件里面
需用到知识点:
基础知识点:
- open文件操作 保存
- for循环
- 字典创建
- 函数关键传参
- print输出函数
采集知识点:
- requests简单使用
- parsel css选择器
- csv 数据持久化
代码展示
完整源码绿方块搜索:xiaoyuanllsll 领取
导入模块
# 导入数据请求模块 --> 第三方模块, 需要安装 pip install requests
import requests
# 导入数据解析模块 --> 第三方模块, 需要安装 pip install parsel
import parsel
# 导入csv模块
import csv
采集多页
for page in range(1, 26):
# 请求链接
url = f'http://*****.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-{page}'
伪装浏览器
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)
print(response)
<Response [200]> 响应对象
Response中文意思就是响应
<> 表示对象 200 状态码 表示请求成功
把获取下来html字符串数据<response.text>, 转成可解析对象
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() # 标题
comment = li.css('.star a::text').get() # 评论
recommend = li.css('.tuijian::text').get() # 推荐
writer = li.css('.publisher_info a::attr(title)').get() # 作者
date = li.css('.publisher_info span::text').get() # 日期
publisher = li.css('div:nth-child(6) a::text').get() # 出版社
price_n = li.css('.price .price_n::text').get() # 售价
price_r = li.css('.price .price_r::text').get() # 原价
price_s = li.css('.price .price_s::text').get() # 折扣
price_e = li.css('.price_e .price_n::text'