Python采集商品数据信息,做数据可视化分析,又是对数据分析上心的一天

前言

环境使用

在开始之前,安装好我们的代码编辑器和环境是非常重要的

  • Python 3.8
  • pycharm --> 编辑器
  • jupyter notebook --> 数据分析编辑器

模块使用

  • requests >>> pip install requests 数据请求
  • parsel >>> pip install parsel 数据解析
  • csv <表格文件> 内置模块 保存数据

安装第三方模块方法:win + R 输入cmd 输入安装命令 pip install 模块名

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)

案例基本思路

  1. 明确需求 <完成>
    明确采集的网站是什么?
    明确采集的数据是什么?
  2. 发送请求, 模拟浏览器对url地址发送请求
  3. 获取数据, 获取网页源代码
  4. 解析数据, 提取我们想要的数据内容 <书籍基本信息>
  5. 保存数据, 保存表格文件里面

请添加图片描述

需用到知识点:

基础知识点:

  • 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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值