Python抓取电商平台数据 / 采集商品评论 / 可视化展示 词云图...

news2024/11/18 2:59:29

前言

大家早好、午好、晚好吖 ❤ ~

我给大家准备了一些资料,包括:

2022最新Python视频教程、Python电子书10个G

(涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题)、Python学习路线图等等

直接在文末名片自取即可!

本次亮点

  1. selenium工具的使用

  2. 结构化的数据解析

  3. csv数据保存

环境介绍:

  • python 3.8

  • pycharm

  • 谷歌驱动 谷歌浏览器

selenium 操控 谷歌驱动 然后 操控浏览器 模拟人的行为去操作浏览器

模块使用:

  • selenium

    pip install selenium==3.141.0 (指定版本安装模块)

    安装模块时候速度比较慢 可以切换一下镜像源

    (模拟人的行为去操作浏览器)

  • csv

    内置模块 不需要安装 把数据保存到csv表格里面

  • time

    内置模块 不需要安装 时间模块 延时操作 延时等待

安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

selenium 模拟人的行为去操作浏览器

  1. 打开浏览器

  2. 输入网址

  3. 输入想要商品名字

  4. 点击搜索 查看商品数据

  5. 获取我们想要数据内容

  6. 保存数据

代码展示

“”"

爬取商品数据

🎯 文章素材、解答、源码、教程领取处:点击

“”"

导入模块

import pprint
from selenium import webdriver  # 从selenium里面导入webdriver的方法
# 导入时间模块
import time
import csv
word = input('请输入你想要获取商品: ')

创建一个文件保存 如果utf-8保存csv文件乱码 改成 utf-8-sig

f = open(f'{word}.csv', mode='a', encoding='utf-8', newline='')

csv_writer = csv.DictWriter(f, fieldnames=[
    'title',
    'price',
    'comment',
    'shop_name',
    'href',
])

写入表头

csv_writer.writeheader()  

如果把浏览器驱动放到和python安装目录下面, 可以不用指定驱动路径

executable_path=r’C:\01-Software-installation\Miniconda3\chromedriver.exe’

1. 打开浏览器

driver = webdriver.Chrome()  

实例化浏览器对象, 打开一个浏览器 原本是需要一个谷歌驱动 selenium 对象

2. 输入网址

3. 输入想要商品名字

driver.find_element_by_css_selector('#key').send_keys(word)

4. 点击搜索 查看商品数据

driver.find_element_by_css_selector('#search > div > div.form > button > i').click()  # 点击动作

5. 下滑网页, 让商品数据全部加载出来

"""执行页面滚动的操作"""  # javascript
def drop_down():
    for x in range(1, 12, 2):  # 1 3 5 7 9 11 在你不断的下拉过程中, 页面高度也会变的
        time.sleep(1)  # 延时操作 死等
        j = x / 9  # 1/9  3/9  5/9  9/9
        # document.documentElement.scrollTop  指定滚动条的位置
        # document.documentElement.scrollHeight 获取浏览器页面的最大高度
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)


def get_shop_info():
    driver.implicitly_wait(10)  # 隐式等待, 等待网页数据加载 只要数据加载完了 就运行下面的程序
    drop_down()

6. 获取所有商品li标签

css语法 class 可以用小圆点代替, 加上类名字 可以直接定位到标签

    lis = driver.find_elements_by_css_selector('.gl-item')  

elements 提取多个标签 element 提取一个标签

一个一个提取列表里面元素, 用for循环遍历

    for li in lis:
        try:
            title = li.find_element_by_css_selector('a em').text.replace('\n', '')  # 标题
            price = li.find_element_by_css_selector('.p-price strong i').text  # 价格
            comment = li.find_element_by_css_selector('.p-commit strong a').text  # 评论数
            shop_name = li.find_element_by_css_selector('.p-shop span a').text  # 店铺名字
            href = li.find_element_by_css_selector('.p-name a').get_attribute('href')  # 详情页

7. 保存数据

            dit = {
                'title': title,
                'price': price,
                'comment': comment,
                'shop_name': shop_name,
                'href': href,
            }
            csv_writer.writerow(dit)
            print(title, price, comment, shop_name, href)
            # pprint.pprint(title)  格式化输出模块
        except:
            pass

    driver.find_element_by_css_selector('.pn-next').click()  # 点击下一页


for page in range(1, 11):
    print(f'===========================正在采集第{page}页的数据内容===========================')
    get_shop_info()

driver.quit()  # 采集完数据之后 自动关闭浏览器

“”"

爬取商品评论数据

🎯 文章素材、解答、源码、教程领取处:点击

“”"

import requests
import time
for page in range(10):
    time.sleep(2)

    response = requests.get(url=url, headers=headers)
    comments = '\n'.join([index['content'] for index in response.json()['comments']])

comments = [] 创建空列表

for index in response.json()['comments']: for循环遍历提取列表元素

a = index['content'] 根据键值对取值 提取评论数据

comments.append(a) 把评论数据 添加到列表里面

comments = '\n'.join(comments) 通过join的方法把comments 列表里面的元素 用\n合并成为一个字符串

    print(comments)
    with open('评论.txt', mode='a', encoding='utf-8') as f:
        f.write(comments)
        f.write('\n')

“”"

评论制作词云图

“”"

导入模块

结巴分词

import jieba    

词云图模块

import wordcloud    

读取文件 返回对象

f = open('评论.txt', encoding='utf-8')   

读取文本内容 返回字符串

text = f.read()  

通过jieba分词 对文本进行词语分割 返回的列表

text_list = jieba.lcut(text)   
print(text_list)

通过join方法把 文本词语列表合并成一个字符串

string = ' '.join(text_list)   

词云图配置

wc = wordcloud.WordCloud(
    width=800,
    height=800,
    background_color='white',
    scale=15,
    font_path='msyh.ttc'
)

写入词语内容

wc.generate(string)   

输出词云图

wc.to_file('1.png')  

尾语 💝

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Node.js计算机毕业设计公交电子站牌管理系统软件Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

多模态在医疗中的应用

多模态是把要检索的模态融合起来,做整体的检索,查询和检索的必须至少有一个模态是相同的,也就是要查询和检索的模态都已经在融合模态里了。 跨模态是检索结果和查询的模态是不同,如图像检索文本,视频和音频。跨模态检索…

2022-12-17 TCP/IP 协议栈_2

TCP/IP 协议栈_2前言一、TCP/IP协议栈四层协议系统二、封装和分用总结前言 既然要学习计算机网络编程, 就不得不提计网祖师爷 W Richard Stevens, 天妒英才, 先生于1999年就早早陨落. 不知多少人凭着先生所著 “TCP/IP详解” 以及 “UNIX网络编程” 吃的盆满钵满. 而至今可说还…

深入浅出 - Rust 所有权与内存管理机制

一、从变量说起 fn main() {// 基本数据类型let a 5;let b a;// 指针let ptr_a &a;let ptr_b &b;println!("a value {}", a);println!("b value {}", b);println!("ptr_a value {:p}", ptr_a);println!("ptr_b value {:p}…

未来笔试重点(1)

一起成为更优秀的人 1.数组笔试重点考察 1.1整型数组与sizeof 1.2字符数组与sizeof 1.3sizeof与字符串 1.4strlen与字符串 2.指针笔试重点考察 2.1指针与sizeof 2.2指针与strlen sizeof与整型数组 int a[] { 1,2,3,4 };printf("%d\n", sizeof(a));printf(…

NMS与Soft NMS算法解析以及numpy实现

1. NMS算法 1.1 什么是NMS算法 NMS全称为Non Maximum Suppression,中文意思是非极大值抑制,字面意思就是不是极大值的元素被抑制掉,其实就是筛选出局部最大值得到最优解。NMS算法被广泛运用于目标检测算法处理网络输出的边界框。 1.2 为什…

浅谈Linux内核页面换入换出

【推荐阅读】 浅谈linux 内核网络 sk_buff 之克隆与复制 深入linux内核架构--进程&线程 了解Docker 依赖的linux内核技术 怎么在Windows下使用Makefile文件 浅析linux内核网络协议栈--linux bridge 0x00内存页面分类与换入换出规则 内存页面分为用户页面和内核页面。…

GDT践行(第一期):起床---运动--阅读

这里记录每周GDT践行记录.【2022】年第【51】周的第【6】天 封面图 第三部分:起床---运动--阅读 ❝ 小贴士: 在学校,出租房,宾馆,工位很多因素导致 学习区,运动区 卧室 都是同一个地方 环境导致你彻底彻底糊…

[附源码]Python计算机毕业设计Django课程在线测评系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

JVM部分知识点

目录 JVM主要组成部分及其作用? JAVA程序运行机制详情 JVM运行时的数据区 堆和栈的区别? Java垃圾回收机制 Java中有哪些引用类型? 如何判断对象是否可以被回收? JVM中的永久代会发生垃圾回收吗? JVM有哪些垃圾…

我国航空煤油行业发展趋势:燃油附加费复收 或将缓解企业经营压力

根据观研报告网发布的《中国航空煤油市场现状深度研究与投资前景分析报告(2022-2029年)》显示,航空煤油是石油产品之一,别名无臭煤油,主要由不同馏分的烃类化合物组成。航空煤油密度适宜,热值高&#xff0c…

【C语言】浮点型的存储方式

目录 一、浮点型和整型存储方式一样吗? 二、浮点型的存储规则 2.1 S,M,E求法 2.2 如何存放S,M,E 2.2.1 IEEE 754规定 2.2.2 特别的规定 2.2.3 验证 2.3 取出规则 2.3…

改造冰蝎马,实现免杀之default_aes php

本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记 文章目录 文章目录文章目录前文链接前言效果目标密码验证功能免杀后话前文链接 WAMP/DVWA/sqli-labs 搭建burpsuite工具抓包及Intruder暴力破解的使用目录扫描,请求重发,漏…

[附源码]Python计算机毕业设计黑格伯爵国际英语贵族学校官网Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

5G无线技术基础自学系列 | 单站点验证概述

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 单站点验证是指在基站硬件安装调试完成…

RNA-seq 详细教程:可视化(12)

学习内容 了解如何为可视化准备数据了解如果利用可视化来探索分析结果火山图可视化热图可视化可视化结果 当我们处理大量数据时,以图形方式显示该信息以获得更多信息,可能很有用。在本课中,我们将让您开始使用探索差异基因表达数据时常用的一…

【数电实验】移位寄存器与计数器

实验四 移位寄存器与计数器 一 实验目的 1 掌握任意进制计数器的构成方法; 2 熟悉双向移位寄存器的使用方法。 二 实验内容 1 任意进制计数器的构成方法: 用中规模集成计数器74HC161和与非门74LS00,构成十进制计数器。要求分别使用同步预…

精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景

什么是事务消息 事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。RocketMQ的事务消息提供类似 X/Open XA 的分布事务功能,通过事务消息能达到分布式事务的最终一致。 事务消息所对应的场景 在一些对…

docker学习笔记(五)单个服务镜像部署

引言 当前微服务项目已经大面积普及,对于新需求迭代上线有许多疑惑的部分,比如线上的某些功能不能重启,在这种情况下我们需要部署和启动项目就不能搞大范围重启或干脆重新制作镜像,这种方式都是不可取的,这时候就需要…

重学webpack系列(二) -- webpack解决的问题与实现模块化的具体实践

只是根据几个想法,我们便创造出了webpack打包工具,它能够根据我们在前端项目中遇到的疑难杂症对症下药,那么这一章我们就一起来探讨一下我们项目落地所遇到的种种问题。 前端实践中的问题 Jsx / Tsx编译问题Less / Scss编译问题TypeScript编…