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 相关文章推荐
Python3读取zip文件信息的方法
May 22 Python
Python中文字符串截取问题
Jun 15 Python
python 中的int()函数怎么用
Oct 17 Python
Python for循环与range函数的使用详解
Mar 23 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
Django CBV与FBV原理及实例详解
Aug 12 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
关于Python-faker的函数效果一览
Nov 28 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 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
虫族 ZERG 概述
2020/03/14 星际争霸
详细介绍PHP应用提速面面观
2006/10/09 PHP
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
PHP中soap的用法实例
2014/10/24 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
js切换光标示例代码
2013/10/10 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
详细分析python3的reduce函数
2017/12/05 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
python线程中的同步问题及解决方法
2019/08/29 Python
关于Python-faker的函数效果一览
2019/11/28 Python
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
护理助产毕业生的求职信
2014/03/02 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
2014年协会工作总结
2014/11/22 职场文书
老乡会致辞
2015/07/28 职场文书
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
nginx常用配置conf的示例代码详解
2022/03/21 Servers
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android