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

py爬虫的话,selenium是不是能完全取代requests?

selenium适合动态网页抓取,因为它可以控制浏览器去点击、加载网页,requests则比较适合静态网页采集,它非常轻量化速度快,没有浏览器开销,占用资源少。当然如果不考虑资源占用和速度,selenium是可以替代requests的。

但selenium需要配合一些解锁功能才能发挥作用,因为现在大网站反爬机制非常严格,已经从传统的IP识别升级到​​行为分析​​和​​动态对抗,​​像是浏览器指纹、验证码(CAPTCHA)、动态加密、异步加载等,一般简单的爬虫技术基本不可能抓取到稳定的电商数据。

所以开发者们需要进行技术伪装、动态IP设置和自动化工具等方法,去测试和调整不同平台的规则,但又必须要保证在法律允许的范围之内进行数据采集。

什么是法律允许的范围呢?首先只能抓取互联网上公开的非隐私数据,不要去破解后台加密数据,也不可以获取用户隐私数据。其次只能在网站合理的承受范围发送http请求,不能对目标网站造成破坏。否则,可能会面临法律风险。

这次我准备结合Python selenium + bright data的组合来采集某跨境电商网站上的智能手机商品数据,演示下如何使用selenium操控浏览器采集数据,并结合deepseek搭建一个电商商品分析系统,用于监测竞品数据。

https://get.brightdata.com/webscra

当然这个仅供参考学习使用。

1、bright data数据采集技术解读

bright data提供包含网页抓取API、网页解锁器API、网页抓取浏览器、SERP API等在内的自动化产品。这些产品能解决什么问题呢?像你在爬虫过程中遇到的人机验证、验证码、动态页面、浏览器指纹验证等问题,这些都有针对性的解决技术。

就拿这次我用的Scraping Browser来举例,Scraping Browser是数据采集浏览器的意思,它是bright data提供的云浏览器,是有图形界面的有头浏览器,托管在亮数据平台上。它的工作原理和普通自动化浏览器一样,能通过Selenium、Playwright等自动化API来操作采集数据,适合交互频繁的动态网页,执行各种点击、加载等操作。

但是Scraping Browser封装了代理和网站解锁能力,能进行各种高级爬虫操作,比如:CAPTCHA 识别、浏览器指纹、自动重试、请求头选择、处理 cookies、JavaScript 渲染等,对于反爬机制复杂的网站非常适用。

2、使用Scraping Browser采集商品数据

首先这次测试的采集目标是某跨境电商网站的智能手机商品数据,基于Scraping Browser服务,使用Python Selenium库来请求和解析数据,Selenium是主流的浏览器自动化工具,也支持其API接口,操作起来比较方便。

第一步:创建通道

打开bright data,然后打开后台控制面板界面,找到“浏览器API“,创建新的通道。

https://get.brightdata.com/webscra

第二步:设置“浏览器API“相关参数

给新通道起一个任务名称,比如ecommerce_task

接着勾选CAPTCHA 解决器,它能帮你自动识别和解锁各种验证码,非常省心。

最后点击添加,即创建了一个新通道ecommerce_task。

新通道会有用户名、密码,以及Selenium对应的端口,要记住和保密。

在操作平台里,你能找示例代码,比如这次用到的Selenium,我们就直接改改示例请求代码用于抓取商品数据。

第三步:编写脚本,采集数据

这次直接抓取某跨境电商网站搜索页的智能手机商品,搜索关键词为:smart phone,采集的字段有:商品名称(name)、商品价格(price)、商品来源地(location),因为是示例爬虫,所以只选重要的的几个字段。

采集好数据后,保存到本地CSV文件中,用于后续分析。

示例代码如下:

# 本案例仅用于技术研究,遵守《网络安全法》第27条与目标网站robots.txt协议,采样频率控制在5次/分钟以下,单日采集量不超过1000条from selenium.webdriver import Remote, ChromeOptions
from selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnection
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import csv# ==== 请替换为你的 Bright Data 授权信息 ====
AUTH = '你的账号接口地址'
SBR_WEBDRIVER = f'https://{AUTH}@brd.superproxy.io:9515'def main():print('正在连接Scraping Browser...')# 建立远程连接sbr_connection = ChromiumRemoteConnection(SBR_WEBDRIVER, 'goog', 'chrome')opts = ChromeOptions()# 可选:开启无头模式# opts.add_argument('--headless')with Remote(sbr_connection, options=opts) as driver:print('已连接! 导航到Shopee...')# 1)打开 Shopee 手机搜索页url = 'https://shopee.sg/search?keyword=smart%20phone'driver.get(url)# 2)等待商品列表渲染完成:等待每个“商品卡片”出现wait = WebDriverWait(driver, 80)item_selector = 'li[data-sqe="item"]'wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, item_selector)))# 3)滚动以加载更多(如果需要懒加载,可根据实际情况调整)driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(2)# 4)再一次抓取商品卡片items = driver.find_elements(By.CSS_SELECTOR, item_selector)print(f'定位到 {len(items)} 个商品卡片,开始抓取…')# 5)准备存储结果results = []for itm in items:try:# 商品名称name = itm.find_element(By.CSS_SELECTOR, 'div.line-clamp-2').text.strip()# 价格(带币种符号)price = itm.find_element(By.CSS_SELECTOR, 'span.font-medium.text-base\\/5').text.strip()# 商品来源地location = itm.find_element(By.CSS_SELECTOR, 'span.ml-\[3px\]').text.strip()except Exception as e:# 若某个字段缺失则跳过print(f'⚠️ 解析失败:{e}')continueresults.append({'name': name,'price': price,'location': location})# 6)输出到 CSVout_file = 'shopee_mobile_phones.csv'keys = ['name', 'price', 'location']with open(out_file, 'w', newline='', encoding='utf-8-sig') as f:writer = csv.DictWriter(f, fieldnames=keys)writer.writeheader()for row in results:writer.writerow(row)print(f'完成:共抓取 {len(results)} 条,已保存至 {out_file}')if __name__ == '__main__':main()

最终采集数据保存到CSV文件中,部分数据如下:

注:name代表商品名称,price是售价(新加坡元)、location是来源地。

该跨境电商网站是对爬虫监测比较严的平台,会要求各种验证,Scraping Browser都能轻松解锁,而且搜索结果页异步加载,部分操作(如翻页)需模拟用户点击,也能一并解决。

3、使用AI搭建跨境电商监测分析系统

采集好商品数据后,接下来把活交给AI,既可以让它分析商品数据给出合理化建议,也可以搭建商品监测分析系统,将采集和数据分析集成到一个平台里。

比如某跨境电商网站手机商品名称的分析优化,把刚爬取的csv数据提交给AI,输入提示:

附件是手机商品数据,包含名称、价格、来源地,请你分析商品名称内容、结构、形式、优化建议等等,输出分析报告。

AI会自动出具一份分析报告。

有核心要素提取:

也有问题和优化建议:

可以看到AI给出的建议非常详细且具有可参考性。

咱们再将这种功能集成到平台里,让AI设计一个采集和分析数据于一体的商品分析平台。

功能如下:

  • 1、数据采集模块,集成bright data数据自动化采集功能,自动从shopee采集数据
  • 2、竞品动态跟踪模块,自动跟踪某几个核心竞品商品的信息,比如销量、价格、标题等
  • 3、价格趋势预测模块,自动监测某品类价格走势,基于AI智能化定义价格
  • 4、商品名称优化模块,自动监测分析热门商品名称,基于AI分析优化结果

基于采集到的智能手机商品数据示例,实现的效果如下。

相关文章:

py爬虫的话,selenium是不是能完全取代requests?

selenium适合动态网页抓取,因为它可以控制浏览器去点击、加载网页,requests则比较适合静态网页采集,它非常轻量化速度快,没有浏览器开销,占用资源少。当然如果不考虑资源占用和速度,selenium是可以替代requ…...

docker B站学习

镜像是一个只读的模板,用来创建容器 容器是docker的运行实例,提供了独立可移植的环境 https://www.bilibili.com/video/BV11L411g7U1?spm_id_from333.788.videopod.episodes&vd_sourcee60c804914459274157197c4388a4d2f&p3 目录挂载 尚硅谷doc…...

SpringBoot高校宿舍信息管理系统小程序

概述 基于SpringBoot的高校宿舍信息管理系统小程序项目,这是一款非常适合高校使用的信息化管理工具。该系统包含了完整的宿舍管理功能模块,采用主流技术栈开发,代码结构清晰,非常适合学习和二次开发。 主要内容 这个宿舍管理系…...

深度解析 Dockerfile 配置:构建高效轻量的FastAPI 应用镜像

目录 引言 Dockerfile构建FastAPI镜像的示例 一、基础镜像选择:轻量与安全优先 二、元数据声明:镜像维护者信息 三、依赖管理:分层构建与缓存优化 1. 复制依赖文件 2. 安装依赖 四、应用代码复制:最小化镜像内容 五、启动…...

ICASSP2025丨融合语音停顿信息与语言模型的阿尔兹海默病检测

阿尔兹海默病(Alzheimers Disease, AD)是一种以认知能力下降和记忆丧失为特征的渐进性神经退行性疾病,及早发现对于其干预和治疗至关重要。近期,清华大学语音与音频技术实验室(SATLab)提出了一种将停顿信息…...

[蓝桥杯]春晚魔术【算法赛】

目录 输入格式 输出格式 样例输入 样例输出 运行限制 解决思路 代码说明 复杂度分析 问题描述 在蓝桥卫视春晚的直播现场,魔术师小蓝表演了一个红包魔术。只见他拿出了三个红包,里边分别装有 A、B 和 C 个金币。而后,他挥动魔术棒&a…...

LeetCode - 965. 单值二叉树

目录 题目 深度优先搜索方法 正确的写法 题目 965. 单值二叉树 - 力扣(LeetCode) 深度优先搜索方法 什么是深度优先搜索:深度优先搜索(DFS)是一种图或树的遍历算法,它从起始节点开始,尽可能深地沿着一条路径探索&…...

LabVIEW杂草识别与精准喷洒

基于LabVIEW构建了一套集成机器视觉、智能决策与精准控制的农业杂草识别系统。通过高分辨率视觉传感器采集作物图像,利用 LabVIEW 的 NI Vision 模块实现图像颜色匹配与特征分析,结合 Arduino 兼容的工业级控制硬件,实现杂草定位与除草剂精准…...

分布式不同数据的一致性模型

1. 强一致性(Strong Consistency) 定义:所有节点在任何时间点看到的数据完全一致,读操作总是返回最近的写操作结果。特点: 写操作完成后,所有后续读操作都能立即看到更新。通常需要同步机制(如…...

“application/json“,“text/plain“ 分别表示什么

这两个字符串:“application/json” 和 “text/plain” 是 MIME 类型(媒体类型),用于告诉接收方消息内容的格式,它们出现在 ContentType 字段中。 它告诉系统或程序:“这段数据是什么格式?” 格…...

SQL: 窗口滑动(Sliding Window)

目录 什么是“窗口”? 什么是“滑动”? 🔍 滑动窗口的核心: 🕒 什么是时间窗口?(Time Window) 时间窗口的基本结构 时间窗口的三种常见形式 📊 什么是行窗口&…...

学习日记-day20-6.1

完成目标&#xff1a; 知识点&#xff1a; 1.集合_Collections集合工具类 方法:static <T> boolean addAll(Collection<? super T> c, T... elements)->批量添加元素 static void shuffle(List<?> list) ->将集合中的元素顺序打乱static <T>…...

【音视频】 FFmpeg 解码H265

一、概述 实现了使用FFmpeg读取对应H265文件&#xff0c;并且保存为对应的yuv文件 二、实现流程 读取文件 将H265/H264文件放在build路径下&#xff0c;然后指定输出为yuv格式 在main函数中读取外部参数 if (argc < 2){fprintf(stderr, "Usage: %s <input file&…...

Linux 系统 Docker Compose 安装

个人博客地址&#xff1a;Linux 系统 Docker Compose 安装 | 一张假钞的真实世界 本文方法是直接下载 GitHub 项目的 release 版本。项目地址&#xff1a;GitHub - docker/compose: Define and run multi-container applications with Docker。 执行以下命令将发布程序加载至…...

软件测试|FIT故障注入测试工具——ISO 26262合规下的智能汽车安全验证引擎

FIT&#xff08;Fault Injection Tester&#xff09;是SURESOFT专为汽车电子与工业控制设计的自动化故障注入测试工具​&#xff0c;基于ISO 26262等国际安全标准开发&#xff0c;旨在解决传统测试中效率低、成本高、安全隐患难以复现的问题&#xff0c;其核心功能包括&#xf…...

3D拟合测量水杯半径

1&#xff0c;目的。 测量水杯的半径 如图所示&#xff1a; 2&#xff0c;原理。 对 3D 点云对象 进行圆柱体拟合&#xff0c;获取拟合后的半径。 3&#xff0c;注意事项。 在Halcon中使用fit_primitives_object_model_3d进行圆柱体拟合时&#xff0c;输出的primitive_para…...

(21)量子计算对密码学的影响

文章目录 2️⃣1️⃣ 量子计算对密码学的影响 &#x1f30c;&#x1f50d; TL;DR&#x1f680; 量子计算&#xff1a;密码学的终结者&#xff1f;⚡ 量子计算的破坏力 &#x1f510; Java密码学体系面临的量子威胁&#x1f525; 受影响最严重的Java安全组件 &#x1f6e1;️ 后…...

Python训练打卡Day38

Dataset和Dataloader类 知识点回顾&#xff1a; Dataset类的__getitem__和__len__方法&#xff08;本质是python的特殊方法&#xff09;Dataloader类minist手写数据集的了解 在遇到大规模数据集时&#xff0c;显存常常无法一次性存储所有数据&#xff0c;所以需要使用分批训练的…...

Selenium基础操作方法详解

Selenium基础操作方法详解&#xff1a;从零开始编写自动化脚本&#xff08;附完整代码&#xff09; 引言 Selenium是自动化测试和网页操作的利器&#xff0c;但对于新手来说&#xff0c;掌握基础操作是成功的第一步。本文将手把手教你使用Selenium完成浏览器初始化、元素定位、…...

Kali Linux从入门到实战:系统详解与工具指南

一、Kali Linux简介 Kali Linux是一款基于Debian的Linux发行版&#xff0c;专为渗透测试和网络安全审计设计&#xff0c;由Offensive Security团队维护。其前身是BackTrack&#xff0c;目前集成了超过600款安全工具&#xff0c;覆盖渗透测试全流程&#xff0c;是网络安全领域…...

【大模型】Bert变种

1. RoBERTa&#xff08;Robustly optimized BERT approach&#xff09; 核心改动 取消 NSP&#xff08;Next Sentence Prediction&#xff09;任务&#xff0c;研究发现 NSP 对多数下游任务贡献有限。动态遮蔽&#xff08;dynamic masking&#xff09;&#xff1a;每个 epoch …...

vue-09(使用自定义事件和作用域插槽构建可重用组件)

实践练习&#xff1a;使用自定义事件和作用域插槽构建可重用组件 构建可重用的组件是高效 Vue.js 开发的基石。本课重点介绍如何通过自定义事件和范围插槽来增强组件的可重用性&#xff0c;从而实现更灵活和动态的组件交互。我们将探索如何定义和发出自定义事件&#xff0c;使…...

简单三步FastAdmin 开源框架的安装

简单三步FastAdmin 开源框架的安装 第一步&#xff1a;新建站点1&#xff0c;在宝塔面板中&#xff0c;创建一个新的站点&#xff0c;并填写项目域名。 第二步&#xff1a;上传框架1&#xff0c;框架下载2&#xff0c;上传解压缩 第三步&#xff1a;配置并安装1&#xff0c;进入…...

RISC-V 开发板 MUSE Pi Pro 搭建 Spacengine AI模型部署环境

视频讲解&#xff1a; RISC-V 开发板 MUSE Pi Pro 搭建 Spacengine AI模型部署环境 Spacengine 是由 进迭时空 研发的一套 AI 算法模型部署工具&#xff0c;可以方便的帮助用户部署自己的模型在端侧&#xff0c; 环境部署的方式&#xff0c;官方提供了两种方式&#xff1a; do…...

C++面试5——对象存储区域详解

C++对象存储区域详解 核心观点:内存是程序员的战场,存储区域决定对象的生杀大权!栈对象自动赴死,堆对象生死由你,全局对象永生不死,常量区对象只读不灭。 一、四大地域生死簿 栈区(Stack) • 特点:自动分配释放,速度极快(类似高铁进出站) • 生存期:函数大括号{}就…...

【Unity】AudioSource超过MaxDistance还是能听见

unity版本&#xff1a;2022.3.51f1c1 将SpatialBlend拉到1即可 或者这里改到0 Hearing audio outside max distance - #11 by wderstine - Questions & Answers - Unity Discussions...

基于 51 单片机的智能饮水机控制系统设计与实现

一、引言 随着物联网技术的发展,传统家电的智能化升级成为趋势。本文提出一种基于 51 单片机的智能饮水机设计方案,实现水温精准控制、水位监测、人机交互等功能,具有成本低、稳定性高的特点,适用于家庭和小型办公场景。 二、硬件设计 2.1 核心芯片选型 单片机:选用STC…...

Qt 读取和写入 INI 格式的配置文件

Qt 读取和写入 INI 格式的配置文件 前言&#xff1a;INI 配置文件在 Qt 开发中的重要性基础夯实&#xff1a;INI 文件结构与 QSettings 核心概念1. INI 文件的基本结构2. QSettings 类概述3. 初始化 QSettings 对象4. 基本读写操作5. 高级操作技巧5.1 处理数组和列表5.2 检查键…...

互联网大厂Java求职面试:AI与云原生架构实战解析

互联网大厂Java求职面试&#xff1a;AI与云原生架构实战解析 面试背景设定 场景&#xff1a;某互联网头部企业技术总监办公室&#xff0c;窗外是城市夜景&#xff0c;室内灯光柔和。面试官是一位经验丰富的技术总监&#xff0c;面前摆着一杯黑咖啡和候选人的简历。 候选人&a…...

Spring:从青铜到王者,你的Java修炼手册

一、Spring家族宇宙&#xff1a;原来你是这样的框架&#xff08;青铜段位&#xff09; 1.1 Spring的"前世今生"&#xff1a;从泡面到满汉全席 ​​2002年的泡面哲学​​&#xff1a;Rod Johnson在厨房煮泡面时突然顿悟&#xff1a;"Java开发为什么不能像泡面一…...