Python爬虫常用小技巧之设置代理IP


Posted in Python onSeptember 13, 2018

设置代理IP的原因

我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站。假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问。所以你可以设置一些代理服务器来帮助你做工作,每隔一段时间换一个代理,这样便不会出现因为频繁访问而导致禁止访问的现象。

我们在学习Python爬虫的时候,也经常会遇见所要爬取的网站采取了反爬取技术导致爬取失败。高强度、高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,所以下面这篇文章讲述一个爬虫技巧,设置代理IP

这里介绍一下免费获取代理IP的方法,这个方法的优点就是免费,但是缺点就是爬取后存在很多不能用的

IP地址取自国内?匿代理IP网站,西刺代理,我们爬取首页IP地址就足够一般使用,或者你也可以爬取第一页,第二页…的

配置环境

  • 安装requests库
  • 安装bs4库
  • 安装lxml库

具体代码

话不多说直接上代码吧

from bs4 import BeautifulSoup
import requests
import random

def get_ip_list(url, headers):
 web_data = requests.get(url, headers=headers)
 soup = BeautifulSoup(web_data.text, 'lxml')
 ips = soup.find_all('tr')
 ip_list = []
 for i in range(1, len(ips)):
  ip_info = ips[i]
  tds = ip_info.find_all('td')
  ip_list.append(tds[1].text + ':' + tds[2].text)
 return ip_list

def get_random_ip(ip_list):
 proxy_list = []
 for ip in ip_list:
  proxy_list.append('http://' + ip)
 proxy_ip = random.choice(proxy_list)
 proxies = {'http': proxy_ip}
 return proxies

if __name__ == '__main__':
 url = 'http://www.xicidaili.com/nn/'
 headers = {
 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17'
 }
 ip_list = get_ip_list(url, headers=headers)
 proxies = get_random_ip(ip_list)
 print(proxies)

函数get_ip_list(url, headers)传入url和headers,最后返回一个IP列表,列表的元素类似122.114.31.177:808格式,这个列表包括国内?匿代理IP网站首页所有IP地址和端口

函数get_random_ip(ip_list)传入第一个函数得到的列表,返回一个随机的proxies,这个proxies可以传入到requests的get方法中,这样就可以做到每次运行都使用不同的IP访问被爬取的网站,有效地避免了真实IP被封的风险

proxies的格式是一个字典: {‘http': ‘http://122.114.31.177:808‘} ,可以将下面的执行也封装为方法

对于抓取IP这个,西刺代理的服务器做了反爬处理,如果你频繁去抓取的话,服务器会主动返回503错误,提示block,所以在请求的时候可以先一次请求完保存一个文件,来读取这个文件,或者爬取一个ip使用几分钟后,再去爬取一次,相当于加一个定时功能

代理IP的使用

运行上面的代码会得到一个随机的proxies,把它直接传入requests的get方法中即可

res = requests.get(url, headers=headers, proxies=proxies)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
PyQt5实现简单数据标注工具
Mar 18 Python
Python实现FM算法解析
Jun 18 Python
详细介绍pandas的DataFrame的append方法使用
Jul 31 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
python hashlib加密实现代码
Oct 17 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
Python+Xlwings 删除Excel的行和列
Dec 19 Python
python实现按日期归档文件
Jan 30 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
May 26 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 #Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 #Python
Python字典创建 遍历 添加等实用基础操作技巧
Sep 13 #Python
python单例模式获取IP代理的方法详解
Sep 13 #Python
如何利用python制作时间戳转换工具详解
Sep 12 #Python
Python get获取页面cookie代码实例
Sep 12 #Python
python读取和保存图片5种方法对比
Sep 12 #Python
You might like
php生成随机数或者字符串的代码
2008/09/05 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
PHPThumb图片处理实例
2014/05/03 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python简单连接MongoDB数据库的方法
2016/03/15 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
python中如何设置代码自动提示
2020/07/15 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
求职信的最佳写作思路
2014/02/01 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
企业文化口号
2014/06/12 职场文书
药剂专业自荐书
2014/06/20 职场文书
志愿者事迹材料
2014/12/26 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
鉴史问廉观后感
2015/06/10 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书