成都网站建设设计

将想法与焦点和您一起共享

python带你采集当当网商品及评论数据并实现词云图

前言 ????

嗨喽,大家好呀~这里是爱看美女的茜茜呐

永新ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

本次采集网介绍:图书频道-全球最大中文网上书店

专业提供小说传记,青春文学,成功励志,投资理财等各品类图书

畅销榜最新报价、促销、评论信息,引领最新网上购书体验!

环境使用 ????:

  • Python 3.8

  • Pycharm

模块使用 ????:

  • requests >>> pip install requests

  • parsel >>> pip install parsel

  • csv

爬虫基本思路流程 ????:

一. 数据来源分析

  1. 确定自己采集数据内容
  2. 抓包分析,自己想要数据来自哪里 ---> 请求那个url地址得到想要的数据
  • 开发者工具抓包分析 F12 或者 鼠标右键点击检查 选择 network(网络), 刷新网页
  • 通过关键字(我们想要数据比如: 书名) 去搜索数据包是那个 ---> 确定请求是那个网址得到数据内容

请求这个网站 就可以得到我们想要数据内容

二. 代码实现步骤:

  1. 发送请求, 模拟浏览器对于url发送请求

  2. 获取数据, 获取服务器返回响应数据 ---> 开发者工具里面response

  3. 解析数据, 提取我们想要数据内容, 书籍基本信息

  4. 保存数据, 保存表格里面

数据采集 ????

# 导入数据请求模块  ---> 第三方模块 需要 在cmd 里面 pip install requests
import requests
# 导入数据解析模块---> 第三方模块 需要 在cmd 里面 pip install parsel
import parsel
# 导入csv模块---> 内置模块 不需要安装
import csv

# 创建文件
f= open('书籍data25页.csv', mode='a', encoding='utf-8', newline='')
# f文件对象 fieldnames 字段名---> 表格第一行 作为表头
csv_writer= csv.DictWriter(f, fieldnames=[
'标题',
'评论',
'推荐',
'作者',
'日期',
'出版社',
'售价',
'原价',
'折扣',
'电子书',
'详情页',
])
# 源码、解答、教程加Q裙:
# 写入表头
csv_writer.writeheader()
"""
1. 发送请求, 模拟浏览器对于url发送请求
- 等号左边是定义变量名
- 模拟浏览器 ---> 请求头
        headers---> 在开发者工具里面复制粘贴 字典数据类型
        一种简单反反爬手段, 防止被服务器识别出来是爬虫程序
- 使用什么请求方式, 根据开发者工具来的
"""
for page in range(1, 26): #  1,26 是取1-25的数字, 不包含26
    # 确定请求网址
    url= f'http://bang.dangdang.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'
    }
    # 发送请求 返回的响应对象---> 200]>: <> 表示对象  response 响应回复  200状态码 表示请求成功
    response= requests.get(url=url, headers=headers)
    print(response)
    #2. 获取数据, 获取服务器返回响应数据 ---> 开发者工具里面 response  print(response.text)
"""
    3. 解析数据, 提取我们想要数据内容, 书籍基本信息
    根据得到数据类型以及我们想要数据内容, 选择最适合解析方法:
- re正则表达式
- css选择器
- xpath
    xpath--->  根据标签节点提取数据
    css选择器---> 根据标签属性提取数据内容
        css语法匹配  不会1  会的 2
        复制粘贴会不会---> ctrl + C  ctrl + v
"""
    # 转数据类型 ''>
    selector= parsel.Selector(response.text)
    # 第一次提取 提取所有li标签--> 返回列表, 元素Selector对象
    lis= selector.css('.bang_list_mode li')
    # for循环遍历 之后进行二次提取 我们想要内容
for li in lis:
"""
        attr() 属性选择器 
        a::attr(title)---> 获取a标签里面title属性
get() 获取一个 第一个 
"""
        title = li.css('.name a::attr(title)').get()  # 标题
        star= li.css('.star a::text').get().replace('条评论', '')  # 评论
        recommend= li.css('.tuijian::text').get().replace('推荐', '')  # 推荐
        author= li.css('.publisher_info a::attr(title)').get()  # 作者
        date= li.css('.publisher_info span::text').get()  # 日期
        press= 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().replace('', '')  # 折扣
        price_e= li.css('.price .price_e .price_n::text').get()  # 电子书
        href= li.css('.name a::attr(href)').get()  # 详情页
        # 保存数据
        源码、解答、教程加Q裙:
        dit= {
'标题': title,
'评论': star,
'推荐': recommend,
'作者': author,
'日期': date,
'出版社': press,
'售价': price_n,
'原价': price_r,
'折扣': price_s,
'电子书': price_e,
'详情页': href,
        }
        # 写入数据
        csv_writer.writerow(dit)
        print(title, star, recommend, author, date, press, price_n, price_r, price_s, price_e, href, sep=' |')

文章名称:python带你采集当当网商品及评论数据并实现词云图
网页路径:http://chengdu.cdxwcx.cn/article/dsoggoi.html