当前位置: 首页 > news >正文

selenium爬取苏宁易购平台某产品的评论

目录

selenium的介绍

1、 selenium是什么? 

2、selenium的工作原理

3、如何使用selenium?

webdriver浏览器驱动设置

关键步骤

代码

运行结果

注意事项


selenium的介绍


1、 selenium是什么? 


    用于Web应用程序测试的工具。可以驱动浏览器执行特定操作,自动按照脚本
    代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样。
    支持的浏览器包括IE,Firefox,Safari,Chrome,Opera等。


2、selenium的工作原理


    浏览器具有webdriver驱动,这个驱动是根据不同的浏览器开发的,
    不同的浏览器使用不同的webdriver驱动程序且需要对应相应的浏览器版本,
    webdriver驱动程序可以通过浏览器内核控制浏览执行指定命令


3、如何使用selenium?


使用前准备: a、安装selenium库  b、驱动浏览器的内核驱动
a、安装selenium,使用pip install selenium -i https://pypi.mirrors.ustc.edu.cn/simple/
                或在pycharm中安装
b、chrome内核驱动地址    360浏览器使用的就是chrome的内核,QQ浏览器使用IE,IE,
https://chromedriver.storage.googleapis.com/index.html  

首先确定你的浏览器是使用哪个内核??
    windows系统:下载下来的文件解压后放置在python安装地址的Scripts中
    Linux和Mac系统:同上,注意:系统存在2个Python版本,确定当前运行的python
                    版本配置在环境变量中

爬取苏宁易购平台某款产品的优质评论与差评

webdriver浏览器驱动设置

webdriver具备多种不同浏览器的驱动,
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser= webdriver.Safari()
其中.chrome.webdriver import WebDriver as Chrome定义了别名,Chrome代表WebDriver

关键步骤

  1. 初始化浏览器驱动

    • 使用 selenium 的 Options 对象配置 Edge 浏览器,例如可以设置无界面模式。
    • 初始化 webdriver.Edge,启动浏览器。
  2. 抓取优质评价

    • 打开优质评价的 URL。
    • 使用 find_elements 查找所有评价内容,并将其保存到文件 优质评价1.txt
    • 点击“下一页”按钮,循环抓取所有页的评论内容。
  3. 抓取差评

    • 打开差评的 URL。
    • 使用 find_elements 查找所有差评内容,并将其保存到文件 差评.txt
    • 点击“下一页”按钮,循环抓取所有页的差评内容。
  4. 关闭浏览器

    • 完成抓取后,调用 driver.quit() 关闭浏览器。

代码

from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
import time# 创建 Edge 浏览器选项对象
options = Options()
# 在这里可以添加各种选项,例如:
# options.add_argument('--headless')  # 无界面模式# 使用修改后的参数传递方式初始化 Edge 浏览器驱动
driver = webdriver.Edge(options=options)# 抓取优质评价
driver.get('https://review.suning.com/cluster_cmmdty_review/cluster-38249278-000000012389328846-0000000000-1-good.htm?originalCmmdtyType=general&safp=d488778a.10004.loverRight.166')# 打开文件,用于保存优质评价内容
yzpj_file = open('优质评价1.txt', 'w', encoding='utf-8')def get_py_content(file):# 查找所有包含评价内容的元素pj_elements_content = driver.find_elements(By.CLASS_NAME, 'body-content')# 遍历每个元素,将文本内容写入文件for i in range(len(pj_elements_content)):file.write(pj_elements_content[i].text + '\n')# 获取第一页的评论内容
get_py_content(yzpj_file)# 查找下一页按钮
next_elements = driver.find_elements(By.XPATH, '//*[@class="next rv-maidian "]')
print(next_elements)# 循环点击下一页,获取所有页的评论内容
while next_elements:next_element = next_elements[0]time.sleep(1)  # 等待页面加载next_element.click()  # 点击下一页get_py_content(yzpj_file)  # 获取当前页的评论内容next_elements = driver.find_elements(By.XPATH, '//*[@class="next rv-maidian "]')  # 重新查找下一页按钮# 关闭优质评价文件
yzpj_file.close()# 抓取差评
driver.get('https://review.suning.com/cluster_cmmdty_review/cluster-38249278-000000012389328846-0000000000-1-bad.htm?originalCmmdtyType=general&safp=d488778a.10004.loverRight.166')# 打开文件,用于保存差评内容
cpj_file = open('差评.txt', 'w', encoding='utf-8')def get_cp_content(file):# 查找所有包含差评内容的元素pj_elements_content = driver.find_elements(By.CLASS_NAME, 'body-content')# 遍历每个元素,将文本内容写入文件for i in range(len(pj_elements_content)):file.write(pj_elements_content[i].text + '\n')# 获取第一页的差评内容
get_cp_content(cpj_file)# 查找下一页按钮
next_elements = driver.find_elements(By.XPATH, '//*[@class="next rv-maidian "]')
print(next_elements)# 循环点击下一页,获取所有页的差评内容
while next_elements:next_element = next_elements[0]time.sleep(2)  # 等待页面加载next_element.click()  # 点击下一页get_cp_content(cpj_file)  # 获取当前页的差评内容next_elements = driver.find_elements(By.XPATH, '//*[@class="next rv-maidian "]')  # 重新查找下一页按钮# 关闭差评文件
cpj_file.close()# 关闭浏览器
driver.quit()

运行结果

1)优质评价

2)差评

注意事项

  1. 浏览器驱动

    • 确保已安装正确版本的 Microsoft Edge 驱动程序,并将其路径添加到系统环境变量中。
  2. 网页动态加载

    • 使用 time.sleep() 等待页面加载,避免因页面未完全加载而导致错误。
  3. 文件编码

    • 打开文件时指定 encoding='utf-8',避免写入内容时出现乱码。
  4. XPath 定位

    • 确保 XPath 表达式正确,能够定位到“下一页”按钮。如果网页结构发生变化,需要调整 XPath
  5. 无界面模式

    • 如果需要无界面运行,可以取消注释 options.add_argument('--headless')

相关文章:

selenium爬取苏宁易购平台某产品的评论

目录 selenium的介绍 1、 selenium是什么? 2、selenium的工作原理 3、如何使用selenium? webdriver浏览器驱动设置 关键步骤 代码 运行结果 注意事项 selenium的介绍 1、 selenium是什么? 用于Web应用程序测试的工具。可以驱动浏览…...

Spark提交任务

1、Spark提交任务到Yarn 1.1、DwKuduApp spark-submit --class com.io.etl.dwkudu.DwKuduApp \ --files /etl/etl-dwkudu/conf/doris.property,/etl/etl-dwkudu/conf/redis.property,/etl/etl-dwkudu/conf/log4j.property \ --master yarn --deploy-mode cluster \ --driver-…...

游戏引擎学习第113天

仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板:优化的基本过程 在游戏编程中,优化是一个非常重要的学习内容,尤其是想要成为专业开发者时。优化的核心是理解代码的执行速度,以及如何提升其性能。在这个阶段,已经…...

token是什么

在自然语言处理(NLP)和机器学习的背景下,token 是指模型在处理文本时的最小单位。通常,这个单位可以是单词、字符,或者词的一部分。具体来说,token 的定义取决于你使用的模型和它的分词方式。 举个例子&am…...

23. AI-大语言模型-DeepSeek赋能开发-Spring AI集成

文章目录 前言一、Spring AI 集成 DeepSeek1. 开发AI程序2. DeepSeek 大模型3. 集成 DeepSeek 大模型1. 接入前准备2. 引入依赖3. 工程配置4. 调用示例5. 小结 4. 集成第三方平台(已集成 DeepSeek 大模型)1. 接入前准备2. POM依赖3. 工程配置4. 调用示例…...

IPv6报头40字节具体怎么分配的?

目录 IPv6报头结构 字段详解 示例代码:IPv6报头的Python实现 输出示例 IPv6协议是为了解决IPv4地址耗尽问题而设计的下一代互联网协议。与IPv4相比,IPv6不仅提供了更大的地址空间,还简化了报头结构,提高了网络设备的处理效率。…...

驱动开发、移植

一、任务明确:把创龙MX8的驱动 按照我们的要求 然后移植到 我们的板子 1.Linux系统启动卡制作, sd卡 先按照 《用户手册—3-2-Linux系统启动卡制作及系统固化》 把创龙的Linux系统刷进去。 2. 把TLIMX8-EVM的板子过一遍 把刚刚烧好系统的sd卡插入 创…...

BFS与Flood Fill:算法原理、实现细节与复杂度分析

目录 1. 概述 2. BFS 的基本原理 3. Flood Fill 算法 4. BFS 实现 Flood Fill 的步骤 5. C 实现 6. 代码解析 7. 复杂度分析 8. 应用场景 总结 1. 概述 Flood Fill 算法是一种用于填充封闭区域的算法,常用于图像处理、绘图工具和游戏开发中。BFS&#xff08…...

计算机网络基础杂谈(局域网、ip、子网掩码、网关、DNS)

目录 1. 简单局域网的构成 2. IP 地址 3. 子网掩码 4. IP地址详解自定义IP 5. IP 地址详解 6. 网关 7. DNS 域名解析 8. ping 1. 简单局域网的构成 交换机是组建局域网最重要的设备,换句话说,没有交换机就没法搭建局域网 交换机不能让局域网连…...

雷龙CS SD NAND(贴片式TF卡)测评体验

一、产品概述 近期获赠雷龙科技(Longsto)推出的CS系列贴片式SD NAND存储解决方案,包含两片工业级贴片式NAND芯片(CSNP16GCR01-AOW)及全兼容转接板。该方案支持TF卡形态扩展,实现高可靠性嵌入式存储应用。 …...

【Alertmanager】alertmanager告警系统原理剖析与应用实战,应有尽有非常全面

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...

Java——权限修饰符

一、权限修饰符的继承访问规则 以下按访问范围从宽到窄排序: 修饰符同包同类同包子类同包非子类跨包子类跨包非子类public✔️✔️✔️✔️✔️protected✔️✔️✔️✔️❌默认(包级)✔️✔️✔️❌❌private✔️❌❌❌❌ 关键点&#xf…...

一周学会Flask3 Python Web开发-redirect重定向

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 前面我们学过渲染到模板页面,这个其实是一种内部的转发,浏览器地址栏地址没有变化。如果我们想重定向…...

python面向对象:方法

1. 实例方法 实例方法用于操作实例变量,必须包含 self 参数。 class Person:def __init__(self, name):self.name namedef greet(self):print(f"Hello, my name is {self.name}")person1 Person("Alice") person1.greet() # 输出&#xff…...

物联网简介集合

物联网(IoT)指的是物理设备(如电器和车辆)之间的互联互通。这些设备嵌入了软件、传感器和连接功能,使其能够相互连接并交换数据。这项技术实现了从庞大的设备网络中收集和共享数据,为打造更高效、自动化的系…...

centos下使用pyenv管理python版本

在 CentOS 上安装 pyenv 和 pyenv-virtualenv,可以按照以下步骤进行操作: ps: centos7 最高适配到3.9.* 步骤 1:安装依赖 首先,确保你的系统中安装了必需的依赖项。你可以使用以下命令安装它们: [root ~]# yum gro…...

C++:类与对象,定义类和构造函数

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; //如何让定义一个类 // 封装 // 1、将数据和方法定义到一起。 // 2、把想给你看的数据给你看&#xff0c;不想给你看的封装起来。 通过访问限定符来实现 class Stack { public: //1.成…...

【Java消息队列】应对消息丢失、重复、顺序与积压的全面策略

应对消息丢失、重复、顺序与积压的全面策略 引言kafka消息丢失生产者消费者重复消费顺序消费消息积压生产者消费者其他RabbitMQ消息丢失生产者事务机制,保证生产者发送消息到 RabbitMQ Server发送方确认机制,保证消息能从交换机路由到指定队列保证消息在 RabbitMQ Server 中的…...

解锁机器学习核心算法|神经网络:AI 领域的 “超级引擎”

一、神经网络&#xff1a;AI 领域的 “超级引擎” 在机器学习的庞大算法体系中&#xff0c;有十种算法被广泛认为是最具代表性和实用性的&#xff0c;它们犹如机器学习领域的 “十大神器”&#xff0c;各自发挥着独特的作用。这十大算法包括线性回归、逻辑回归、决策树、随机森…...

Android14(13)添加墨水屏手写API

软件平台&#xff1a;Android14 硬件平台&#xff1a;QCS6115 需求&#xff1a;特殊品类的产品墨水屏实现手写的功能&#xff0c;本来Android自带的Input这一套可以实现实时展示笔迹&#xff0c;但是由于墨水屏特性&#xff0c;达不到正常的彩屏刷新的帧率&#xff0c;因此使用…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...