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实现baidu hi自动登录的代码
Feb 10 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
Python实现简单登录验证
Apr 13 Python
Python numpy 常用函数总结
Dec 07 Python
python TKinter获取文本框内容的方法
Oct 11 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
python用插值法绘制平滑曲线
Feb 19 Python
python列表使用实现名字管理系统
Jan 30 Python
Python3 合并二叉树的实现
Sep 30 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 Python
python urllib库的使用详解
Apr 13 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
如何使用脚本模仿登陆过程
2006/11/22 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
Python 字典(Dictionary)操作详解
2014/03/11 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
英语自我评价范文
2014/01/24 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
golang使用map实现去除重复数组
2022/04/14 Golang