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

浏览器自动化测试工具selenium——爬虫操作记录

selenium——是一款web自动化测试框架,其能模拟正常的用户操作,比如点击。但selenium并不是浏览器,没有执行js和解析html/css的能力,因此selenium需要和浏览器配合使用。

因为selenium可以模仿用户行为,因此selenium也常被用来作为爬虫解决方案。原因是随着技术的发展,网站技术变得越来越复杂,特别是动态网站技术,使用了多种反爬技术,比如请求头限制,ip限制,代码混淆,加密,接口验证等。

通过js逆向等逆向工程使得爬虫变得越来越困难,技术难度大;因此selenium配合浏览器就是一个好的选择,不管网站使用多少技术,我模拟用户的正常浏览操作行为总可以把,这样就可以直接绕过各种混淆,逆向等反爬技术。

但selenium既然是模仿正常用户的操作,那他就无法绕过一部分验证,那就是验证码或者其它客户端验证方式。

因此selenium也并不是完美的。

selenium使用起来很简单,但如果用来做爬虫需要一定的前后端开发经验,否则直接做爬虫会非常的困难。

初始化代码如下:

# python 代码
# 引入selenium包
from selenium.webdriver import Chrome# 创建一个浏览器对象, url为要爬取的网站地址
driver = webdriver.Chrome(options=opt)
driver.get("url")

driver发起请求之后,就可以获取到网页代码,和真实用户操作的结果没有什么不同;然后selenium就可以通过xpath,正则表达式等方式获取到页面节点。然后模拟用户操作,比如点击,输入用户,密码等。

# 通过xpath语法,通过class或id等从网页中提取节点,
btn = driver.find_element(By.XPATH, '//*[@class="douyin-login__close" or contains(@class,"dy-account-close")]')# 模拟用户点击
btn.click()

因此,selenium开发爬虫的难点不是技术问题,是经验问题,比如怎么通过xpath提到到目标节点。

最难的一点就是各种验证码,比如看图识字,输入验证数字等;最坑的就是一些滑块验证,有时会监听鼠标移动路径,但selenimu只是模拟用户点击没有办法监听鼠标移动,因此这种验证码没有什么好办法绕过。

所以,面对这种网站,最好的方式就是跳过前端页面,直接爬取其接口;但后端接口也会使用大量的反爬技术,比如用户身份验证,权限验证,加解密等。

总之,爬虫是一门技术和经验并重的工作,重要的是结果,不是过程;不论你用什么办法能拿到你想要的数据,那就是一个好的爬虫工程师,千万不要钻牛角尖。

当然,在最后提醒一下,爬虫技术是一门徘徊在法律边缘的技术,虽然法律没有禁止爬虫的存在,但如果用来爬取别人的私密数据,或者重要的企业数据,然后给企业造成损失,那么就有可能吃皇家饭。

因此,可以学习爬虫技术,但要注意爬虫技术的使用。

http://www.lryc.cn/news/408799.html

相关文章:

  • 微信小程序配置访问服务器失败所发现的问题及解决方案
  • javaEE(1)
  • 极简Springboot+Mybatis-Plus+Vue零基础萌新都看得懂的分页查询(富含前后端项目案例)
  • IPython的Bash之舞:%%bash命令全解析
  • ST Stellar-E SR5E1 22KW OBC combo 3KW DC-DC汽车充电器解决方案
  • Postman中的A/B测试实践:优化API性能的科学方法
  • 微信小程序支付流程
  • Istio 学习笔记
  • 测试面试宝典(三十三)—— 接口测试有没有测试出什么问题?
  • YOLOV8模型转TFJS 在Mac下遇到的版本的坑
  • vue、react前端框架实现TodoList页面案例
  • el-date-picker 时间控件校验选择时间必须早于当前时间(带时分秒)
  • godot新建项目及设置外部编辑器为vscode
  • vue中无法调试
  • python机器学习8--自然语言处理(2)
  • LinkedList底层原理
  • CSS技巧专栏:一日一例 11 -纯CSS实现多彩渐变按钮系列特效
  • 基于微信小程序+SpringBoot+Vue的自助点餐系统(带1w+文档)
  • 04-Charles中的Map Remote和Map Local介绍
  • R语言优雅的进行广义可加模型泊松回归分析
  • 大模型学习笔记十四:Agent模型微调
  • 大疆创新2025校招内推
  • 搜索引擎项目(四)
  • 声音克隆一键本地化部署 GPT-SoVITS
  • 使用【Easypoi】实现百万数据导出
  • GRL-图强化学习
  • 昇思25天学习打卡营第22天|Pix2Pix实现图像转换
  • 全感知、全覆盖、全智能的智慧快消开源了。
  • ABC364:D - K-th Nearest(二分)
  • hive中分区与分桶的区别