selenium+python设置爬虫代理IP的方法


Posted in Python onNovember 29, 2018

1. 背景

在使用selenium浏览器渲染技术,爬取网站信息时,一般来说,速度是很慢的。而且一般需要用到这种技术爬取的网站,反爬技术都比较厉害,对IP的访问频率应该有相当的限制。所以,如果想提升selenium抓取数据的速度,可以从两个方面出发:

第一,提高抓取频率,出现验证信息时进行破解,一般是验证码或者用户登录。

第二,使用多线程 + 代理IP, 这种方式,需要电脑有足够的内存和充足稳定的代理IP 。

2. 为chrome设置代理IP

from selenium import webdriver
chromeOptions = webdriver.ChromeOptions()

# 设置代理
chromeOptions.add_argument("--proxy-server=http://202.20.16.82:10152")
# 一定要注意,=两边不能有空格,不能是这样--proxy-server = http://202.20.16.82:10152
browser = webdriver.Chrome(chrome_options = chromeOptions)

# 查看本机ip,查看代理是否起作用
browser.get("http://httpbin.org/ip")
print(browser.page_source)

# 退出,清除浏览器缓存
browser.quit()

注意事项:

第一,代理IP最好是稳定的固定IP,不要选动态IP。我们常用的爬虫IP是高匿名动态IP,是通过拨号动态产生的,时效性很短,一般在1~3分钟。对于scrapy这种并发度很高,又不需要登录的爬虫来说,非常合适,但是在浏览器渲染类爬虫中并不适用。

第二,代理IP的速度。因为selenium爬虫采用的是浏览器渲染技术,本身速度就很慢。如果选择的代理IP速度较慢,就会大大增加爬取的时间。

第三,电脑内存要够大。因为chrome占内存较大,在并发度很高的情况下,容易造成浏览器崩溃,也就是程序崩溃。

第四,在程序结束时,调用 browser.quit( ) 清除浏览器缓存。

3. 需要用户名密码验证的代理

参考文章:

Selenium chrome配置代理Python版:https://3water.com/article/151634.htm

GitHub:https://github.com/RobinDev/Selenium-Chrome-HTTP-Private-Proxy

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python脚本获取操作系统版本信息
Dec 17 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
Python BS4库的安装与使用详解
Aug 08 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
把pandas转换int型为str型的方法
Jan 29 Python
python调用webservice接口的实现
Jul 12 Python
python 实现视频 图像帧提取
Dec 10 Python
PyQT5 emit 和 connect的用法详解
Dec 13 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
Python3实现飞机大战游戏
Apr 24 Python
Python函数__new__及__init__作用及区别解析
Aug 31 Python
Python 如何解决稀疏矩阵运算
May 26 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 #Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 #Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 #Python
使用python判断你是青少年还是老年人
Nov 29 #Python
pycham查看程序执行的时间方法
Nov 29 #Python
pycharm在调试python时执行其他语句的方法
Nov 29 #Python
Selenium chrome配置代理Python版的方法
Nov 29 #Python
You might like
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
yii用户注册表单验证实例
2015/12/26 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
js实现录音上传功能
2019/11/22 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
一篇不错的Python入门教程
2007/02/08 Python
Python中请使用isinstance()判断变量类型
2014/08/25 Python
python中的错误处理
2016/04/10 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
Django 路由层URLconf的实现
2019/12/30 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
某公司部分笔试题
2013/11/05 面试题
一份软件工程师的面试试题
2016/02/01 面试题
职工代表大会主持词
2014/04/01 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
Java使用jmeter进行压力测试
2021/07/09 Java/Android