Python爬虫设置代理IP的方法(爬虫技巧)


Posted in Python onMarch 04, 2018

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

(一)配置环境

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

(二)代码展示

# IP地址取自国内?匿代理IP网站:http://www.xicidaili.com/nn/
# 仅仅爬取首页IP地址就足够一般使用
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; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
  }
  ip_list = get_ip_list(url, headers=headers)
  proxies = get_random_ip(ip_list)
  print(proxies)函数get_ip_list(url, headers)传入url和headers,最后返回一个IP列表,列表的元素类似42.84.226.65:8888格式,这个列表包括国内?匿代理IP网站首页所有IP地址和端口。

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

(三)代理IP的使用

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

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

总结

以上所述是小编给大家介绍的Python爬虫设置代理IP的方法(爬虫技巧),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
python使用递归解决全排列数字示例
Feb 11 Python
Python循环语句之break与continue的用法
Oct 14 Python
关于Python 3中print函数的换行详解
Aug 08 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
python提取图像的名字*.jpg到txt文本的方法
May 10 Python
python实现剪切功能
Jan 23 Python
python装饰器练习题及答案
Nov 01 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 Python
谈谈python垃圾回收机制
Sep 27 Python
Python机器学习之基于Pytorch实现猫狗分类
Jun 08 Python
浅析python实现scrapy定时执行爬虫
Mar 04 #Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 #Python
Python爬虫框架Scrapy实例代码
Mar 04 #Python
详解python中asyncio模块
Mar 03 #Python
python3.6+django2.0开发一套学员管理系统
Mar 03 #Python
python爬虫面试宝典(常见问题)
Mar 02 #Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 #Python
You might like
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
php 发送带附件邮件示例
2014/01/23 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
javaScript arguments 对象使用介绍
2013/10/18 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
使用python计算三角形的斜边例子
2020/04/15 Python
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
UNIX文件系统分类
2014/11/11 面试题
《寓言两则》教学反思
2014/02/27 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
2016年春节慰问信息
2015/03/25 职场文书
第一节英语课开场白
2015/06/01 职场文书
python爬虫selenium模块详解
2021/03/30 Python
python实现图片九宫格分割的示例
2021/04/25 Python
Python基础之函数嵌套知识总结
2021/05/23 Python