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

article/2025/7/5 15:18:47

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分析优化结果

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


http://www.hkcw.cn/article/IxruBmDmLf.shtml

相关文章

c++类和对象-继承

参考链接:46 类和对象-继承-继承方式_哔哩哔哩_bilibili 1.概述 作用:提高代码复用率,多个子类和父类有相同之处,又有自己各自的特点。例如基类人有四肢、会走路、说话,不同子类中国人是黑头发,说汉语&am…

MySQL中的锁

MySQL中有哪些锁? 全局锁(FTWRL) 含义:Flush Table with Read Lock的缩写,它会锁定整个数据库实例,让所有表都处于只读状态。 使用全局锁,要执行的命令: flush tables with read lock 之后,整个数据库就处于只读…

探索 Dify 的工作流:构建智能应用的新范式

目录 前言1. 什么是 Dify 的工作流2. 工作流的核心组成2.1 节点(Node)2.2 连接线(Edge)2.3 上下文与变量系统 3. 工作流的典型使用场景3.1 多轮对话与智能客服3.2 文档问答系统3.3 多语言营销文案生成3.4 多模型对比与评估&#x…

分词算法BBPE详解和Qwen的应用

一、TL;DR BPE有什么问题:依旧会遇到OOV问题,并且中文、日文这些大词汇表模型容易出现训练中未出现过的字符Byte-level BPE怎么解决:与BPE一样是高频字节进行合并,但BBPE是以UTF-8编码UTF-8编码字节序列而非字符序列B…

小云天气APP:精准预报,贴心服务

在快节奏的现代生活中,天气变化对我们的日常生活、出行安排以及健康状况都有着重要影响。一款精准、便捷且功能丰富的天气预报应用,无疑是提升生活品质的必备工具。小云天气APP正是这样一款为安卓用户量身定制的天气预报应用,凭借其精准的天气…

阿里云服务器ECS详细购买流程

1、打开云服务器ECS官方页面 打开阿里云服务器ECS页面 点击进入阿里云服务器 2、付费类型选择 阿里云服务器付费类型 3、地域节点 阿里云服务器全球28个地域,中国大陆地域如华北2(北京)、华东1(杭州)、华南1&#xf…

FastAPI+Pyomo实现线性回归解决饮食问题

之前在 FastAPI介绍-CSDN博客 中介绍过FastAPI,在 Pyomo中线性规划接口的使用-CSDN博客 中使用Pyomo解决饮食问题,这里将两者组合,即FastAPI在服务器端启动,通过Pyomo实现线性回归;客户端通过浏览器获取饮食的最优解。…

【C++篇】STL适配器(上篇):栈与队列的底层(deque)奥秘

💬 欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习! 👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对C感兴趣的…

leetcode刷题日记——二叉树的层次遍历

[ 题目描述 ]: [ 思路 ]: BFS,利用队列特性完成对树的层次遍历运行如下 int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes) {if (!root) {*returnSize 0;return NULL;}struct TreeNode* queue[2000];…

【优选算法 | 队列 BFS】构建搜索流程的核心思维

算法相关知识点可以通过点击以下链接进行学习一起加油!双指针滑动窗口二分查找前缀和位运算模拟链表哈希表字符串模拟栈模拟(非单调栈)优先级队列 很多人学 BFS 的时候都知道“用队列”,但为什么一定是队列?它到底在整个搜索流程中起了什么作…

Retrievers检索器+RAG文档助手项目实战

导读:作为企业级应用开发中的关键技术,LangChain检索器(Retrievers)正成为构建高效RAG系统的核心组件。本文将深入探讨检索器的技术架构与实战应用,帮助开发者掌握这一重要的AI工程技术。 检索器的价值在于提供统一的检…

word中如何快速调整全部表格大小

Step1: 选中一个表格,然后在自动调整选项卡中选择“根据窗口调整表格大小” Step2:选中其他表格 Step3: 按F4即可快速调整

设计模式——中介者设计模式(行为型)

摘要 文章详细介绍了中介者设计模式,这是一种行为型设计模式,通过中介者对象封装多个对象间的交互,降低系统耦合度。文中阐述了其核心角色、优缺点、适用场景,并通过类图、时序图、实现方式、实战示例等多方面进行讲解&#xff0…

20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s

20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s 2025/6/2 18:15 缘起:有些时候,需要在uboot阶段做一些事情。 于是,希望在荣品的PRO-RK3566开发板的Android13下的uboot启动停下。 1、【原始的LOG&#xff…

汽车安全体系:FuSa、SOTIF、Cybersecurity 从理论到实战

汽车安全:功能安全(FuSa)、预期功能安全(SOTIF)与网络安全(Cybersecurity) 从理论到实战的安全体系 引言:自动驾驶浪潮下的安全挑战 随着自动驾驶技术从L2向L4快速演进,汽车安全正从“机械可靠…

学习经验分享【40】目标检测热力图制作

目标检测热力图在学术论文(尤其是计算机视觉、深度学习领域)中是重要的可视化分析工具和论证辅助手段,可以给论文加分不少。主要作用一是增强论文的可解释性与说服力:论文中常需解释模型 “如何” 或 “为何” 检测到目标&#xf…

C++ 检查一条线是否与圆接触或相交(Check if a line touches or intersects a circle)

给定一个圆的圆心坐标、半径 > 1 的圆心坐标以及一条直线的方程。任务是检查给定的直线是否与圆相交。有三种可能性: 1、线与圆相交。 2、线与圆相切。 3、线在圆外。 注意:直线的一般方程是 a*x b*y c 0,因此输入中只给出常数 a、b、…

判断用户输入昵称是否存在(Python)

一、运行结果 二、源代码 # 创建一个存储昵称的列表; name_list [章鱼, 张愚, 宇文弑]# 循环输入判断用户输入昵称是否存在 while True:# 获取用户输入的昵称;name input(请输入昵称:)# 判断昵称是否存在;if name in name_list…

RAG理论基础总结

目录 概念 流程 文档收集和切割 读取文档 转换文档 写入文档 向量转换和存储 搜索请求构建 向量存储工作原理 向量数据库 文档过滤和检索 检索前 检索 检索后 查询增强和关联 QuestionAnswerAdvisor查询增强 高级RAG架构 自纠错 RAG(C-RAG&#xf…

pikachu靶场通关笔记09 XSS关卡05-DOM型XSS-X

目录 一、XSS 二、DOM型XSS 三、源码分析 1、打开DOM-X型XSS关卡 2、XSS探测 3、源码分析 四、渗透实战 1、Payload1 2、Payload2 3、Payload3 五、DOM型XSS与DOM-X型XSS区别 本系列为通过《pikachu靶场通关笔记》的XSS攻击关卡(共10关)渗透集合&#xf…