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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
requests和lxml实现爬虫的方法
Jun 11 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
基于python进行桶排序与基数排序的总结
May 29 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
Django框架实现分页显示内容的方法详解
May 10 Python
Python-Tkinter Text输入内容在界面显示的实例
Jul 12 Python
python flask几分钟实现web服务的例子
Jul 26 Python
python 操作hive pyhs2方式
Dec 21 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
pycharm 的Structure界面设置操作
Feb 05 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里得到前天和昨天的日期的代码
2007/08/16 PHP
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
vue实现搜索功能
2019/05/28 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
js实现简单的倒计时
2021/01/28 Javascript
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python内置数据类型详解
2014/08/18 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
python的flask框架难学吗
2020/07/31 Python
python简单实现插入排序实例代码
2020/12/16 Python
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
建筑公司员工自我鉴定
2014/04/08 职场文书
村党支部书记承诺书
2014/05/29 职场文书
药店促销活动总结
2014/07/10 职场文书
重阳节标语大全
2014/10/07 职场文书
介绍信怎么写
2015/01/30 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB