Python爬虫进阶 - win和linux下selenium使用代理

article/2025/8/27 22:31:11

目录

Windows selenium配置

下载地址

Chrome Chromedriver 版本对应关系

实践测试

操作元素

浏览器操作

获取元素信息

鼠标操作

实战demo

selenium添加代理

Linux selenium配置

检查服务器环境

下载安装第三方库(最简单版)

实践测试

代码测试

目录下生成截图 png 查看

让 Selenium 在 Linux 中以有头模式运行 

Xvfb介绍

实战测试


Windows selenium配置

下载地址(大佬直接点就好)

Selenium
ChromeDriver
Chrome
GeckoDriver
Firefox

Chrome Chromedriver 版本对应关系

我们维护多个版本的ChromeDriver。选择哪个版本取决于您所使用的Chrome浏览器的版本。

  1. 具体来说,ChromeDriver使用与Chrome相同的版本号方案。更多详情请参见https://www.chromium.org/developers/version-numbers。
  2. 每个版本的ChromeDriver都支持Chrome,其主要版本号、次要版本号和构建版本号都是一致的。例如,ChromeDriver 73.0.3683.20支持所有以73.0.3683开头的Chrome版本。
  3. 在新的Chrome大版本进入Beta版之前,会发布一个匹配的ChromeDriver版本。
  4. 在新的主要版本首次发布后,我们将根据需要发布补丁。这些补丁可能与Chrome浏览器的更新相吻合,也可能不吻合。

以下是选择下载ChromeDriver版本的步骤:

  1. 首先,找出您正在使用的Chrome浏览器的版本。比方说,你的Chrome是72.0.3626.81。
  2. 取出Chrome浏览器的版本号,去掉最后一部分,然后将结果附加到URL "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_"上。例如,使用Chrome浏览器的版本为72.0.3626.81,你会得到一个URL “https://chromedriver.storage.googleapis.com/LATEST_RELEASE_72.0.3626”。
  3. 使用最后一步创建的URL来检索一个包含要使用的ChromeDriver版本的小文件。例如,上述URL将得到一个包含 "72.0.3626.69 "的文件。(当然,实际数字在未来可能会发生变化)。
  4. 使用从上一步骤中获取的版本号来构建下载ChromeDriver的URL。如果是72.0.3626.69版本,URL将是 “https://chromedriver.storage.googleapis.com/index.html?path=72.0.3626.69/”。
  5. 初次下载后,建议你偶尔再走一遍上述流程,看看是否有任何错误修复版本。

实践测试

操作元素

1、.send_keys()  # 输入方法
2、.click()  # 点击方法
3、.clear()  # 清空方法

浏览器操作

1、driver.maximize_window()  # 最大化浏览器
2、driver.set_window_size(w,h)  # 设置浏览器大小 单位像素 【了解】
3、driver.set_window_position(x,y)  # 设置浏览器位置  【了解】
4、driver.back() # 后退操作
5、driver.forward() # 前进操作
6、driver.refrensh() # 刷新操作
7、driver.close() # 关闭当前主窗口(主窗口:默认启动那个界面,就是主窗口)
8、driver.quit() # 关闭driver对象启动的全部页面
9、driver.title # 获取当前页面title信息
10、driver.current_url # 获取当前页面url信息

获取元素信息

1、text 获取元素的文本; 如:driver.text
2、size 获取元素的大小: 如:driver.size
3、get_attribute 获取元素属性值;如:driver.get_attribute("id") ,传递的参数是元素的属性名
4、is_displayed 判断元素是否可见 如:element.is_displayed()
5、is_enabled 判断元素是否可用 如:element.is_enabled()
6、is_selected 判断元素是否被选中 如:element.is_selected()

鼠标操作

1、context_click(element) # 右击
2、double_click(element)  #双击
3、double_and_drop(source, target)  # 拖拽
4、move_to_element(element)  # 悬停 【重点】
5、perform()  # 执行以上事件的方法 【重点】

实战demo

# demo
from selenium import webdriver
from selenium.webdriver.common.by import By
import timeoptions = webdriver.ChromeOptions()options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--disable-dev-shm-usage')
# options.add_argument('--proxy-server=http://{0}'.format(ip))
driver = webdriver.Chrome(options=options)# 用户正常访问该值为false。使用selenium时该值为true。
# 下面代码解决掉这个问题
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""
})
driver.get("https://www.baidu.com/")
time.sleep(5)
# 截图看是否访问了百度
driver.save_screenshot("baidu.png")

selenium添加代理

        做爬虫怎么也要用到代理是吧,即使是自动化也不可能一个ip地址一天访问几千上万

# 添加无认证代理,以参数形式添加
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--proxy-server=http://ip:port')  
driver = webdriver.Chrome(chrome_options=chromeOptions)

 ip和端口就需要大家自己找了,通过代理平台api直接获取,装进来就好。

Linux selenium配置

检查服务器环境

[root@aa /]# lsb_release -a
Distributor ID: CentOS
Release:        7.9.2009[root@aa /]# python -V
Python 2.7.5[root@aa /]# python3 -V
Python 3.6.8

下载安装第三方库(最简单版)

# 安装selenium

pip3 install selenium

# 安装chromedriver

yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-zenhei-fonts

# 下载对应版本Chromedriver(没输错就是下面这个版本对应的网址) https://chromedriver.storage.googleapis.com/index.html?path=110.0.5481.30/

# 移动位置

mv chromedriver /usr/bin/

# 给予执行权限

chmod +x /usr/bin/chromedriver

实践测试

代码测试

# demo
from selenium import webdriver
from selenium.webdriver.common.by import By
import time#options = webdriver.ChromeOptions()
#options.add_argument('--headless')
options = webdriver.ChromeOptions()
# 服务器无界面运行,否则会报错,后续配置插件解决
options.add_argument("headless")options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--disable-dev-shm-usage')
# options.add_argument('--proxy-server=http://{0}'.format(ip))
driver = webdriver.Chrome(options=options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""
})
driver.get("https://www.baidu.com/")
time.sleep(5)
# 截图看是否访问了百度
driver.save_screenshot("aaaaaaaaaaaaaaaaaa.png")

目录下生成截图 png 查看

让 Selenium 在 Linux 中以有头模式运行 

Xvfb介绍

Xvfb 在一个没有图像设备的机器上实现了 X11显示服务的协议,它实现了其他图形界面都有的各种接口,但并没有真正的图形界面

所以当一个程序在 Xvfb 中调用图形界面相关的操作时,这些操作都会在虚拟内存里面运行,只不过你什么都看不到而已

使用 Xvfb,我们就可以欺骗 Selenium 或者 Puppeteer,让它以为自己运行在一个有图形界面的系统里面,这样一来就能够正常使用有头模式了

# 安装

yum install Xvfb

实战测试

# 更改 demo# 服务器无界面运行,否则会报错,后续配置插件解决
# 注释掉 以正常有界面模式运行
# options.add_argument("headless")xvfb-run XXX
# 例如
xvfb-run python3 selenium_test.py运行查看截图   成功

----------

2023.2.20


http://chatgpt.dhexx.cn/article/FhJOEtbw.shtml

相关文章

Python自助爬虫代理ip模块

短小无比的前言: 代理对于爬虫来说可是很重要的一环,尤其在对于大量数据的时候,一不小心自己ip挂了,要么你换网,要么你等个几小时恢复 之后你上网查阅了种种办法,跨越种种艰难险阻,数以堆计的bu…

python爬虫之requests库使用代理方式

在看这篇文章之前,需要大家掌握的知识技能: python基础html基础http状态码 让我们看看这篇文章中有哪些知识点: get方法post方法header参数,模拟用户data参数,提交数据proxies参数,使用代理进阶学习 安装…

爬虫代理IP哪家好?

前言 随着大数据时代的到来,爬虫已经成了获取数据的必不可少的方式,做过爬虫的想必都深有体会,爬取的时候莫名其妙 IP 就被网站封掉了,毕竟各大网站也不想自己的数据被轻易地爬走。 对于爬虫来说,为了解决封禁 IP 的问题,一个有效的方式就是使用代理,使用代理之后可以让…

Python爬虫基础-使用代理

为什么需要代理? 我们爬取数据的时候,开始可以正常爬取,但是过了一段时间,网站可能就会提示“您的IP访问频率过高”,然后就无法正常访问网站。 这是因为网站采取了反爬策略,某个ip访问频率超过一个阈值后&…

Python爬取代理IP

在一些网页的内容爬取过程中,有时候在单位时间内如果我们发送的请求次数过多,网站就可能会封掉我们的IP地址,这时候为了保证我们的爬虫的正常运行,我们就要使用代理IP。 下面来介绍如何构建自己的IP池。 我们用快代理来获取代理i…

流量数据分析的方法学习

1、看数字和趋势(以电商网站为例) 2、维度分解 3、用户分群(又叫用户画像) 4、转化漏斗 5、行为轨迹 关注行为轨迹,是为了真实了解用户行为。通过大数据手段,还原用户的行为轨迹,有助于增长团队…

恶意流量分析(一)

在分析恶意样本时,样本可能包含网络行为,比如样本从C2服务器上请求下载后续病毒文件。所以对于在病毒分析的角度,对恶意流量的分析也是不可避免的。在这里通过恶意流量习题(malware-traffic-analysis)对恶意流量进行入…

APP流量分析

分析参数 发送流量、接收流量 流量统计方法 抓包&#xff1a;干扰因素多&#xff0c;其他APP、安卓自带TCP收发长度统计功能 #找到包名 adb shell pm list packsges -3 #找到UID adb shell ps | grep <包名> #找到目录 adb shell cat /proc/9045<uid>/status #…

如何进行网站流量分析(一)

如何进行网站流量分析&#xff08;一&#xff09; 流量分析整体来说是一个内涵非常丰富的体系&#xff0c;整体过程是一个金字塔结构&#xff1a; 金字塔的顶部是网站的目标&#xff1a;投资回报率&#xff08;ROI&#xff09;。 网站流量分析模型举例 1 网站流量质量分析&a…

流量与日志分析

文章目录 1.流量与日志分析1.1系统日志分析1.1.1window系统日志与分析方法1.1.2linux 系统日志与分析方法 1.2 web日志分析iis 日志分析方法apache日志分析**access_log****error_log** nginx日志分析tomcat 日志分析主流日志分析工具使用 1.流量与日志分析 日志&#xff0c;是…

攻防世界—流量分析1

题目&#xff1a;流量分析&#xff0c;你知道这堆流量做了什么事情吗&#xff0c;你能恢复出来flag吗&#xff1f; 拿到附件以后&#xff0c;解压出一个抓包文件&#xff0c;通过wireshark打开&#xff0c;发现大量HTTP报文。 随机查看一个HTTP访问的URL&#xff0c;经过URL解…

流量分析:如何分析数据的波动?

流量分析。 内容分为四部分&#xff1a; 背景&#xff1b; 渠道分析&#xff1b; 转化与价值分析&#xff1b; 流量波动逻辑性分析。 背景 建立产品指标体系和报表之后&#xff0c;分析师和业务方最重要的事情就是每天看各种数据&#xff0c;而这个看数据的过程就是流量分…

网站流量分析数据指标

如果如果把一个网站比作一家超市&#xff0c;运营网站就像打理超市的生意&#xff0c;那么目标就是让访客多停留、多购买、多办几张会员卡。为了达成这个目标&#xff0c;我们先要了解当前的情况&#xff0c;比如有多少人走进了超市、看了多少件产品、多少人办理了会员卡;类似地…

产品流量分析

年底要接的数据需求好多&#xff0c;博客好久没更新了。这次和大家分享一下最近对流量分析的一些理解。 流量是产品获得用户的第一步&#xff0c;没有流量就没有转化与营收。对于流量的分析在产品日常运营效果监控中有着非常重要意义。下面我们就流量的来源与流向分析中需要关…

基于流量的分析理解

文章目录 一、Wirshark1.1 数据过滤1.2 数据流跟踪1.3 数据提取 二、流量分析过程 一、Wirshark Wireshark是一个可以进行数据包的捕获和分析的软件。网卡在对接收到的数据包进行处理之前,会先对它们的目的地址进行检查,如果目的地址不为本机的话,就会丢弃这些数据,相反就会将…

流量分析基础篇

流量分析 1.流量分析是什么? 网络流量分析是指捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 CTF比赛中,通常比赛中会提供一个包含流量数据的 PCAP 文件,进行分析。 2.数据包分析 总体把握– 协…

流量告警分析思路

目录 01-流量告警分析中常见的问题 1.安全告警DDOS 2.误报问题始终无法很好的闭环 3.威胁信息验证受阻 4.宽泛的只是涉略面 02-分析前准备工作及注意事项 03安全威胁事件分析 WEB特征检测-SQL注入、XSS、后门访问 WEB特征检测-SQL注入 WEB特征检测-XSS攻击 WEB特征检测…

流量分析入门

前言 个人一直对CTF比赛中MISC中流量分析这一块感兴趣…但好像之前参加的培训没有涉及到。正好看到了一些相关书籍资料&#xff0c;自己向前辈们学习以后整理一些资料来总结一下&#xff08;本人是个很菜…还没入门的pwn手&#xff09; 互联网五层模型 在计算机网络这门课中…

如何进行网站流量分析(二)

如何进行网站流量分析&#xff08;二&#xff09; 流量分析常见分类 指标是网站分析的基础&#xff0c;用来记录和衡量访问者在网站自的各种行为。比如我们经常说的流量就是一个网站指标&#xff0c;它是用来衡量网站获得的访问量。在进行流量分析之前&#xff0c;我们先来了…

CTF--Misc--流量分析

为什么需要流量分析&#xff1f; 网络流量包流转于各个环节&#xff0c;我们可以通过捕捉网络中流动的数据包&#xff0c;然后查看流量包内部的数据以及相关协议&#xff0c;流量分析、统计等等。 通常是包含流量数据的PCAP文件进行分析。 流量分析需要掌握的基本知识&#x…