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 环境变量和import模块导入方法(详解)
Jul 11 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
基于Python对数据shape的常见操作详解
Dec 25 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
Django框架验证码用法实例分析
May 10 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 Python
python DataFrame转dict字典过程详解
Dec 26 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
Python 解析xml文件的示例
Sep 29 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
PHP邮件专题
2006/10/09 PHP
在线竞拍系统的PHP实现框架(二)
2006/10/09 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
jQuery参数列表集合
2011/04/06 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
浅谈Node模块系统及其模式
2017/11/17 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
python实现K最近邻算法
2018/01/29 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
python多维数组切片方法
2018/04/13 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
django列表筛选功能的实现代码
2020/03/27 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
TCP/IP的分层模型
2013/10/27 面试题
自主招生推荐信范文
2014/05/10 职场文书
神农溪导游词
2015/02/11 职场文书
教师辞职书范文
2015/02/26 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL