2025年seleminue + requests 实现爬取若依框架数据

seleminue + requests 实现爬取若依框架数据摘要 本文介绍了用 seleminue requests 实现爬取若依框架数据 重点是用 seleminue 驱动浏览器登录远程站点 然后用 request 实现快速爬取数据 第 1 部分 seleminue 简介 1 1 什么是 selenium selenium 其官网的介绍是 Selenium 使浏览器自动化

大家好,我是讯享网,很高兴认识大家。

摘要:本文介绍了用seleminue + requests 实现爬取若依框架数据,重点是用seleminue驱动浏览器登录远程站点,然后用request实现快速爬取数据。

第1部分:seleminue简介

1.1 什么是selenium

selenium其官网的介绍是:

Selenium 使浏览器自动化。
你用这种力量做什么完全取决于你。
主要是为了测试目的而自动化 Web 应用程序,但当然不仅限于此。
无聊的基于 Web 的管理任务也可以(并且应该)实现自动化。

selenium最初是一个自动化测试工具,提供了一套测试函数,用于支持Web自动化测试,函数非常灵活,能够完成页面元素定位、窗口跳转、鼠标点击事件、滚动窗口、前进倒退等等操作。

而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题,比如无法跨越需要用户登录的障碍,

1.2 selenium的用途

a. selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用浏览器自动访问目标站点并操作,那我们也可以拿它来做爬虫

b. selenium本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等...进而拿到网页渲染之后的结果,可支持多种浏览器

selenium 支持的语言包括C#,Java,Perl,PHP,Python 和 Ruby。目前,Selenium Web 驱动程序最受 Python 和 C#用户迎。 selenium 测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代 Web 浏览器中运行。在爬虫领域 selenium 同样是一把很常用的利器!

1.3 selenium驱动浏览器原理

对于用户代码而言本质上是通过selenium的WebDriver来驱动真正的浏览器,selenium提供了目前市面上常见的浏览器匹配的WebDriver,比如有Chrome不同版本的WebDriver,也有FireFox不同版本的WebDriver.

在我们创建一个WebDrive实例的过程中,selenium首先会确认浏览器的native component是否存在可用而且版本匹配。接着就在目标浏览器里启动一整套Web Service,这套Web Service使用了Selenium自己设计定义的协议,名字叫做The WebDriver Wire Protocol。这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等等等等。

WebDriver Wire协议是通用的,也就是说不管是FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。例如FirefoxDriver初始化成功之后,默认会从http://localhost:7055开始,而ChromeDriver则大概是http://localhost:46350之类的。接下来,我们调用WebDriver的任何API,都需要借助一个ComandExecutor发送一个命令,实际上是一个HTTP request给监听端口上的Web Service。在我们的HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做社么事情。


讯享网

上面的这张图可以解释用户代码、WebDriver API、WebDriver以及浏览器的关系,总结下来就一句话:用户通过代码访问WebDriver API然后WebDriver API 操作WebDriver,WebDriver操控浏览器。最终实现用户代码访问浏览器。

1.4 selenium优缺点

(1)优点

可以帮我们避开一系列复杂的通信流程,例如requests模块,那么requests模块在模拟请求的时候是不是需要把素有的通信流程都分析完成后才能通过请求,然后返回响应。假如目标站点有一系列复杂的通信流程,例如的登录时的滑动验证等...那么你使用requests模块的时候是不是就特别麻烦了。不过你也不需要担心,因为网站的反爬策略越高,那么用户的体验效果就越差,所以网站都需要在用户的**之下降低安全策略。

再看一点requests请求库能不能执行js?答案是不能!那么如果你的网站需要发送ajax请求,异步获取数据渲染到页面上,是不是就需要使用js发送请求了。那浏览器的特点是什么?是不是可以直接访问目标站点,然后获取对方的数据,从而渲染到页面上。那这些就是使用selenium的好处!

(2)缺点

使用selenium本质上是驱动浏览器对目标站点发送请求,那浏览器在访问目标站点的时候,是需要把静态资源比如html、css、js这些文件都要等待它加载完成渲染完成。因此速度比较慢。因此速度慢就是最大的缺点,它的坏处就是效率极低!所以我们一般用它来做登录验证

1.5 selenium的安装

Anaconda 4.12.0 + Python 3.9.7

Chrome 99.0.4844(正式版本) (64 位)

用户代码以python为例,因此在实际应用中需要在python开发环境中安装selenium和浏览器版本匹配的WebDriver

1.5.1在Anaconda中创建虚拟环境

关于Anaconda的使用可以参考我的另一个文章Anaconda------环境管理,在Conda的世界里可以体验到多维世界的乐趣。根据需要可以为你创建不同的虚拟环境,可以在不同的虚拟环境中安装不同的python版本及其依赖包,而且还很方便在各个虚拟环境中切换,并且Pycham还可以使用这些虚拟环境,因此值得学习和应用。

conda create -n your_env_name python=x.x

讯享网
小讯
上一篇 2025-03-27 19:00
下一篇 2025-04-01 23:26

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/121690.html