selenium centos,selenium爬取

这篇文章给大家聊聊关于selenium centos,以及selenium爬取对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

Linux无图形界面环境使用Python+Selenium最佳实践

在Linux无图形界面环境下使用Python与Selenium进行自动化测试或网页数据抓取,是一种常见需求。本文将引导你完成这一过程,包括使用Firefox浏览器以headless模式运行、安装所需工具及编写测试脚本。

Selenium是一个强大的自动化测试工具,能模拟用户操作,如点击、输入文本、验证元素等。它支持多种浏览器/驱动程序,包括Firefox、Chrome、Internet Explorer等,同时也支持远程协议。

若使用Firefox,首先需要安装geckodriver,这是Firefox的驱动程序,用于与Selenium通信。访问geckodriver GitHub页面,下载适合你系统的压缩包,解压并将其可执行文件加入系统PATH变量,或者直接移动到bin目录。

接着安装Firefox浏览器。确保Python环境已准备就绪,并通过pip安装selenium库。

安装Xvfb,这是一种虚拟的X窗口服务器,用于模拟图形界面。在Ubuntu中使用命令sudo apt-get install Xvfb完成安装;CentOS用户则需自行查找相应安装命令。

为了在无图形界面环境下使用Python触发Xvfb,还需安装pyvirtualdisplay库,通过pip安装即可。

编写Python脚本进行自动化测试或网页数据抓取。首先创建虚拟显示,配置Firefox选项为headless模式,然后创建Firefox WebDriver实例进行交互。最后,确保关闭WebDriver和虚拟显示。

运行Python脚本,观察浏览器访问特定页面(如bing搜索)并获取页面标题,同时生成屏幕截图。以headless模式运行Selenium,能实现自动化测试或网页数据抓取,尤其适合Linux云主机环境。通过这些工具的组合,你将获得一个高效、可靠的解决方案。

selenium对接代理与seleniumwire访问开发者工具NetWork

之前在《使用MitmProxy离线缓存360度全景网页》一文中,我展示了如何搭建python代理服务器MitmProxy。

然而,之前的方法是手动访问网页缓存数据。若希望实现自动访问网页并对接代理下载数据,可以通过selenium控制浏览器实现自动访问。

对接selenium的代理服务器,可以使用browsermobproxy,它是基于Java开发的,需要在chromedevtools.github.io...下载对应文件。

参考:使用python3+selenium+browsermob-proxy-2.1.4模拟浏览器开发者模式 Network中的抓包

但个人研究发现,它只是一个基于Java开发的代理服务器,对编码的处理不够准确,经常出现乱码,且难以还原。

解决乱码问题,需要添加Java代码的拦截器设置编码,例如设置文本都以GBK编码解码:

总体来说,个人感觉很难用。相比之下,selenium直接对接MitmProxy代理更方便。

selenium使用代理服务器的代码示例:

这样,我们可以通过MitmProxy代理服务器获取所有经过selenium控制的浏览器访问的数据,同时实现自动化控制和数据获取之间的解耦。mitmdump加载的脚本专门复杂拦截数据并处理,selenium代码专门负责自动化控制。

今天我要介绍的是seleniumwire这个库,关于这个库的完整用法可以参考:

安装:

注意:Linux和Mac系统必须额外安装openssl用于解码https的数据。

CentOS:yum install openssl

Mac:brew install openssl

这个库基本上可以使用被控制的浏览器访问留下的历史记录,可随意下载,但默认仅保存原始的字节数据。若遇到压缩数据,需要自行解压。

以下以网易财经的行情中心数据为例,演示完整代码:

1048 rows× 25 columns

重点代码解释:

这段代码实现对gzip压缩的网络数据进行自动解压。若存在其他类型的压缩,需要编写针对性代码。通用的解压缩代码如下:

wait_loading方法用于检测数据是否已经加载完毕。原理是每隔0.2秒查看一下loading组件是否还存在,不存在则说明加载数据的过程已经结束。

browser.requests缓存了浏览器在访问过程获取的所有数据,类似于浏览器开发者工具的Network。reversed(browser.requests)的目的是倒着查看数据,即优先查看最新获取的数据。通过这种方式,即使不清理历史缓存,也能较为正确地获取数据。

del browser.requests的作用是清理缓存。目的是在下一次点击访问前先清理历史缓存,从而使数据获取的速度变得更快。

Selenium-remote-webdriver使用指南

Selenium-remote-webdriver的使用指南中,主要涉及的是浏览器驱动的管理,特别是针对不同操作系统和浏览器的配置。文章列举了多个进程的资源占用情况,这些都是运行PhantomJS时的实例。然而,值得注意的是,Selenium远程Web驱动接口并不支持PhantomJS,目前推荐使用的浏览器包括Android、Chrome、Firefox、HTMLUnit等,不包括PhantomJS。

解决此问题的方法是通过配置服务器,例如在Ubuntu上使用selenium-server-standalone.jar和Chrome驱动,CentOS上则使用Firefox驱动,Windows环境下则需要与Chrome、Firefox或其他驱动配合使用。客户端则支持Python、Java和C#的Selenium远程库。

在Windows服务器的DEMO中,首先需要安装好Java环境、Python依赖包和Chrome驱动,以及进行相关配置。运行Selenium Server时,可以看到日志信息,包括服务器启动信息、Driver类查找失败的信息,以及因为操作系统不匹配导致的OperaDriver和SafariDriver的注册被跳过。最终,服务器成功启动,表明Selenium Server已经运行就绪。

客户端的Python3示例中,用户需要自行搜索或查阅文档以获取具体的执行步骤,因为这里并未提供详细的代码操作。

阅读剩余
THE END