Python爬虫学习笔记(使用代理及代理池——解决返回状态码302即IP被封的问题)
对于一般的小型爬虫,我们爬取某个网站所发出的请求次数少即频率不是很高时,为避免可能出现的IP被封的问题,我们可以设置爬取延时或者规定爬取时长来解决。
1.requests库
import requests
#如果代理需要认证,可以使用proxy='username:password@IP:port'
proxyHttps = '121.33.220.158' #端口:808
proxyHttp = '110.73.8.171' #端口:8123url = 'http://httpbin.org/get'
proxies={
'http':'http://'+proxyHttp+':8123',
'https':'https://'+proxyHttps+'808'
}
'''
socks5代理使用,首先使用pip安装requests[socks]模块
proxies={
'http':'socks5://'+proxy+':port'
'https':'socks5://'+proxy+':port'
}
'''
try:
re = requests.get(url,proxies)
print(re.text)
except requests.exceptions.ConnectionError as e:
print('ERROR',e.args)
2.selenium+Headless
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsurl = 'http://httpbin.org/get'
service_args=[
'--proxy=110.73.8.171:8123',
'--proxy-type=http'
]# 声明谷歌浏览器对象
#driver = webdriver.Chrome()
#设置浏览器无头模式
option = webdriver.ChromeOptions()
option.add_argument('--headless')
option.add_argument('--disable-gpu') #禁用 GPU 硬件加速,防止出现bug
driver = webdriver.Chrome(options=option,service_args=service_args)
driver.get(url)
print(driver.page_source)
3.代理池的使用
网络上有很多已经封装好的代理池工程可以使用,这里使用此代理池工程,此代理池爬取免费代理网站中的代理IP和端口(获取模块),动态判断其有效性(检测模块)并将有效的代理保存到本地的Redis数据库(存储模块,注意修改自己的端口和密码,具体参见这篇博客),最后建立接口以webAPI的形式暴露可用代理(接口模块),通过接口程序可以动态获取可用代理。使用时首先保持本地redis数据库开启并连接,然后运行代理池工程,最后 运行爬虫工程即可
import requestsPROXY_POOL_URL = 'http://localhost:5555/random' #获取代理IP及端口的URL,此URL暴露随机的可用代理IPdef get_proxy():try:respo = requests.get(PROXY_POOL_URL) #获取代理IP及端口if respo.status_code == 200:return respo.textexcept ConnectionError:return Nonedef use_proxy(getProxy):proxy = getProxyproxies = {'http':'http://'+proxy,'https': 'https://' + proxy}try:response = requests.get('http://httpbin.org/get',proxies=proxies)print(response.text)except requests.exceptions.ConnectionError as e:print('Erroe',e.args)def main():getProxy = get_proxy()use_proxy(getProxy)main()
4.付费代理推荐:阿布云代理(动态版),提供各种爬虫库的接入方式
5.ADSL拨号代理推荐:云立方
Python爬虫学习笔记(使用代理及代理池——解决返回状态码302即IP被封的问题)相关推荐
- python爬虫学习笔记 1.9 (Handler处理器 和 自定义Opener)
python爬虫学习笔记 1.1(通用爬虫和聚焦爬虫) python爬虫学习笔记 1.2 ( HTTP和HTTPS ) python爬虫学习笔记 1.3 str和bytes的区别 python爬虫学习 ...
- python爬虫学习笔记 3.9 (了解参考:训练Tesseract)
python爬虫学习笔记 3.9 (了解参考:训练Tesseract) 参考阅读:训练Tesseract 要使用 Tesseract 的功能,比如后面的示例中训练程序识别字母,要先在系统中设置一 个新 ...
- Python爬虫学习笔记 -- 爬取糗事百科
Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...
- python爬虫学习笔记3.2-urllib和request练习
python爬虫学习笔记3.2-urllib和request练习 一.urllib练习 1.百度贴吧案例 需求 分析 手动测试查询流程 观察页面 分析特殊部分 https://tieba.baidu. ...
- python爬虫学习笔记2模拟登录与数据库
前言 为了加入学校里面一个技术小组,我接受了写一个爬取学校网站通知公告的任务.这个任务比以前写的爬虫更难的地方在于,需要模拟登录才能获得页面,以及将得到的数据存入数据库. 本文按照日期来记录我完成任务 ...
- Python爬虫学习笔记-第三课(网络请求模块下)
网络请求模块下 1. urllib-get案例 1.1 代码需求:爬取贴吧数据 1.2 代码思路 1.3 代码实现 2. urllib-post案例 3. requests模块简介 3.1 get案例 ...
- Python爬虫学习笔记:概念、知识和简单应用
Python爬虫:概念.知识和简单应用 什么是爬虫? 使用的开发工具 一个简单的爬虫实例 Web请求过程分析 HTTP协议 请求头中的重要内容 响应头中的重要内容 请求方式 requests 安装 G ...
- <python爬虫之JS逆向实例-2>某宇创-状态码521-加速乐
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵犯了您的合法权益,请告知,我将及时更正.删除,谢谢.邮箱地址:lc1139411732@163.com 目标站点:aHR0cHM6Ly93 ...
- 爬虫python能做游戏吗_一入爬虫深似海,从此游戏是路人!总结我的python爬虫学习笔记!...
1.基本抓取网页 get方法 post方法 2.使用代理IP 在开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到代理IP: 在urllib2包中有ProxyHandler类,通过此类可以设置代 ...
最新文章
- python编程入门与案例详解课后题答案-Python入门之三角函数sin()函数实例详解
- Jon Person教你如何用.NET/.NETCF写GPS应用程序。
- 谈谈mysql优化_浅谈MySQL SQL优化
- String类得常用方法
- 细说JDK动态代理的实现原理
- linux input输入子系统分析《一》:初识input输入子系统
- ASP.NET性能监控和优化入门
- 【Tensorflow】tensorboard小结
- C++ 八股文(一)
- scrapy+selenium之中国裁判文书网文书爬取
- 逆向PPTV视频真实播放地址全过程(Java版)
- 基于三点说构成的夹角提取特征点
- sata7p 定义_SATA接口定义
- MoveIt!入门教程-简介
- 浅谈计算机应用的认识,浅谈《计算机应用基础》教学
- 中国大学MOOC课程《程序设计入门——C语言》翁恺老师 第六周测试题 高精度小数(习题记录)
- 关于消息推送服务的十问十答
- DBA常用命令——数据库导入导出文件
- matlab程序模拟微信抢红包,js模拟微信抢红包算法的讨论
- Hi3521A Qt5.6 qtmultimedia 安装