python爬取代理ip的示例


Posted in Python onDecember 18, 2020

要写爬虫爬取大量的数据,就会面临ip被封的问题,虽然可以通过设置延时的方法来延缓对网站的访问,但是一旦访问次数过多仍然会面临ip被封的风险,这时我们就需要用到动态的ip地址来隐藏真实的ip信息,如果做爬虫项目,建议选取一些平台提供的动态ip服务,引用api即可。目前国内有很多提供动态ip的平台,普遍价格不菲,而对于只想跑个小项目用来学习的话可以参考下本篇文章。

简述

本篇使用简单的爬虫程序来爬取免费ip网站的ip信息并生成json文档,存储可用的ip地址,写其它爬取项目的时候可以从生成的json文档中提取ip地址使用,为了确保使用的ip地址的有效性,建议对json文档中的ip现爬现用,并且在爬取时对ip有效性的时间进行筛选,只爬取时长较长、可用的ip地址存储。

实现

使用平台https://www.xicidaili.com/nn/来作为数据源,通过对http://www.baidu.com/的相应来判断ip的可使用性。引用lxml模块来对网页数据进行提取,当然也可以使用re模块来进行匹配提取,这里只使用lxml模块对数据进行提取。
访问https://www.xicidaili.com/nn/数据源,并且启动Fiddler对浏览器数据进行监听,我这里浏览器采用的是Proxy SwitchyOmega插件来配合Fiddler进行使用,在Fiddler找到/nn/*数据查看User-Agent信息并复制下来作为我们访问的头文件。如图:

python爬取代理ip的示例

引入模块

import requests
from lxml import etree
import time
import json

获取所有数据

def get_all_proxy(page):
  url = 'https://www.xicidaili.com/nn/%s'%page
  headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
  }
  response = requests.get(url, headers=headers)
  html_ele = etree.HTML(response.text)
  ip_eles = html_ele.xpath('//table[@id="ip_list"]/tr/td[2]/text()')
  port_ele = html_ele.xpath('//table[@id="ip_list"]/tr/td[3]/text()')
  print(ip_eles)
  proxy_list = []
  for i in range(0,len(ip_eles)):
    check_all_proxy(ip_eles[i],port_ele[i])
  return proxy_list

对数据进行筛选:

def check_all_proxy(host,port):
  type = 'http'
  proxies = {}
  proxy_str = "%s://@%s:%s" % (type, host, port)
  valid_proxy_list = []
  url = 'http://www.baidu.com/'
  proxy_dict = {
      'http': proxy_str,
      'https': proxy_str
    }
  try:
      start_time = time.time()
      response = requests.get(url, proxies=proxy_dict, timeout=5)
      if response.status_code == 200:
        end_time = time.time()
        print('代理可用:' + proxy_str)
        print('耗时:' + str(end_time - start_time))
        proxies['type'] = type
        proxies['host'] = host
        proxies['port'] = port
        proxiesJson = json.dumps(proxies)
        with open('verified_y.json', 'a+') as f:
          f.write(proxiesJson + '\n')
        print("已写入:%s" % proxy_str)
        valid_proxy_list.append(proxy_str)
      else:
        print('代理超时')
  except:
      print('代理不可用--------------->'+proxy_str)

运行程序:

if __name__ == '__main__':
  for i in range(1,11): #选取前十页数据使用
    proxy_list = get_all_proxy(i)
    time.sleep(20)
    print(valid_proxy_list)

生成的json文件:

python爬取代理ip的示例

以上就是python爬取代理ip的示例的详细内容,更多关于python爬取代理ip的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python运行其他程序的实现方法
Jul 14 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
python3实现爬取淘宝美食代码分享
Sep 23 Python
Python单元和文档测试实例详解
Apr 11 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
python 日期排序的实例代码
Jul 11 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
Python 合并多个TXT文件并统计词频的实现
Aug 23 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
Python控制鼠标键盘代码实例
Dec 08 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 Python
用Python 执行cmd命令
Dec 18 #Python
Django用内置方法实现简单搜索功能的方法
Dec 18 #Python
Django解决frame拒绝问题的方法
Dec 18 #Python
Django自带的用户验证系统实现
Dec 18 #Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 #Python
python 爬虫爬取京东ps4售卖情况
Dec 18 #Python
python实现视频压缩功能
Dec 18 #Python
You might like
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
使用正则替换变量
2007/05/05 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
关于vue面试题汇总
2018/03/20 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
js中时间格式化的几种方法
2018/07/22 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
微信小程序背景音乐开发详解
2019/12/12 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
python中偏函数partial用法实例分析
2015/07/08 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
Django返回HTML文件的实现方法
2020/09/17 Python
python opencv肤色检测的实现示例
2020/12/21 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
竞选班干部演讲稿400字
2014/08/20 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
部队个人年终总结
2015/03/02 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
如何用python绘制雷达图
2021/04/24 Python
Python PIL按比例裁剪图片
2022/05/11 Python