前言
嗨喽~大家好呀,这里是魔王呐 ❤ ~!
看了标题,大家应该都知道我们本期的目的了
没错!就是采集数据并作可视化
话不多说,我们抓紧开始正文吧~
完整源码、python资料: 点击此处跳转文末名片获取
环境使用:
在开始之前,安装好我们的代码编辑器和环境是非常重要的
-
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 数据持久化
采集代码展示:
导入模块
# 导入数据请求模块 --> 第三方模块, 需要安装 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').get() # 电子书
href = li.css('.name a::attr(href)').get() # 详情页
dit = {
'标题': title,
'评论': comment,
'推荐': recommend,
'作者': writer,
'日期': date,
'出版社': publisher,
'售价': price_n,
'原价': price_r,
'折扣': price_s,
'电