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进阶教程之词典、字典、dict
Aug 29 Python
使用Python中的线程进行网络编程的入门教程
Apr 15 Python
python中尾递归用法实例详解
Apr 28 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
Python读取xlsx文件的实现方法
Jul 04 Python
python处理RSTP视频流过程解析
Jan 11 Python
Python requests模块session代码实例
Apr 14 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
python使用torch随机初始化参数
Mar 22 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对数组排序的简单实例
2013/12/25 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
js实现随机点名程序
2020/09/17 Javascript
使用Python从零开始撸一个区块链
2018/03/14 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
python监控文件并且发送告警邮件
2018/06/21 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
建筑工程实习自我鉴定
2013/09/19 职场文书
计算机专业应届毕业生自荐信
2013/09/26 职场文书
物流管理专业大学生自荐信
2013/10/04 职场文书
税务专业毕业生自荐信
2013/11/10 职场文书
大学生职业生涯规划范文
2014/01/08 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
岳麓书院导游词
2015/02/03 职场文书
升职自荐信怎么写
2015/03/05 职场文书
债务纠纷起诉书
2015/05/20 职场文书
跳高加油稿
2015/07/21 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS