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中shutil模块的学习笔记教程
Apr 04 Python
python实现简单名片管理系统
Nov 30 Python
Django框架实现分页显示内容的方法详解
May 10 Python
pandas 如何分割字符的实现方法
Jul 29 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
Django操作session 的方法
Mar 09 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
基于Python+QT的gui程序开发实现
Jul 03 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
Python join()函数原理及使用方法
Nov 14 Python
Pytorch 使用tensor特定条件判断索引
Apr 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运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
浅谈js中的闭包
2015/03/16 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
react build 后打包发布总结
2018/08/24 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
详解Vue2的diff算法
2021/01/06 Vue.js
简述Python中的进程、线程、协程
2016/03/18 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
python安装教程
2018/02/28 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
Python解析微信dat文件的方法
2020/11/30 Python
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
计算机专业毕业生自荐信范文
2014/03/06 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
生物技术专业求职信
2014/06/10 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
以权谋私检举信范文
2015/03/02 职场文书
甲午大海战观后感
2015/06/02 职场文书
数据库连接池
2021/04/06 MySQL
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android