IP代理是什么:

ip就是访问网页数据服务器位置信息,每一个主机或者网络都有一个自己IP信息

为什么要使用代理ip:

因为在向互联网发送请求中,网页端会识别客户端是真实用户还是爬虫程序,在今天以互联网为主导的世界中,数据一种资源,谁能得到更多有效的数据,谁就能在今天互联网世界斗争中获得先机,所以网页是不愿意把数据作为开源分享给其他互联网运营公司的,它会创造出许许多多的反制措施来避免自己的数据被其他竞争对手(或利益相关的其他服务商),但又不得不为了创造更高的经济价值,来以非常有限的隧道中让正常真实用户访问它的网页,所以IP作为访问者的唯一标识,自然而然成为互联网公司鉴别真实非爬虫用户的一种手段。

如果你设置的程序访问时间过快(行为异常)超过了正常人访问的时间(行为),被访问的网页就会判定你是一个爬虫程序,对你的IP进行封禁(一般为5-15分钟,不会超过12小时)。

所以作为爬虫工作者为了获取互联网中的数据,通过以更换ip的方式来再一次访问该网页。

因此由于市场需求,网络上出现许多以”为爬虫工作者提供ip地址“的互联网公司。

这类互联网公司为爬虫职业学习者,提供了一些免费IP信息以供学习,在真实项目获取免费IP信息的方式是不被建议的,作者期望你能通过付费的方式来获取更多高质量的IP资源。

作者作为python爬虫初学者赖给大家讲述一下,如何搭建自己IP代理池,IP代理池听名闻义,其实就是装载了许许多多的高质量IP资源,以供学习者和工作人员及时的更换IP避免对项目产生不可挽回的损失。

作为爬虫学习者,我们应该较其他行业人员应具有爬虫技术,通过爬虫来获取更多IP数据。

对IP代理提供商发起访问请求:(本次IP资源的提供商为:”云代理“)

import time
import requests
import parsel
#新建一个列表用来存储完整ip数据
proxies_list = []
for page in range(1,8):print(f"===========正在爬取第{page}====================")time.sleep(1)url = 'http://www.ip3366.net/free/?stype=1&page={page_turn}'.format(page_turn=page) #服务器获取数据
#浏览器的身份标识headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}response = requests.get(url=url,headers=headers)#指定一个编码 = 获取一个编码response.encoding = response.apparent_encodinghtml_data = response.text

将web服务器返回页面数据进行解析:本次采用xpath解析

#3.数据解析 使用xpath 方法,xpath专门用于解析html页面selector = parsel.Selector(html_data) #转换数据类型# print(selector)trs = selector.xpath('//table/tbody/tr')# print(trs)#将拼接好的完整地址保存在一个名为proxies_list的列表中#遍历每一个tr标签for tr in trs:ip = tr.xpath('./td[1]/text()').get()adr = tr.xpath('./td[2]/text()').get()# print(ip,adr)

将获取的数据拼接起来:因为完整ip地址需要加上 http:// 或者 https://

proxies_dict = {#字符串的拼接"http":"http://"+ip+":"+adr,"https":"https://"+ip+":"+adr,}

将获取的完整的IP信息存储起来

proxies_list.append(proxies_dict)

第二大部分:将获取到IP数据检测一下是否可用,避免在爬虫项目中项目浪费太多的时间,来检测ip的可用性。

免费IP几乎百分之九十不可用,所以作为爬虫工作者建议你购买付费数据

定义一个函数用来检测数据是否可用:

def check_ip(proxies_list):""" 代理检测"""#将高质量可用代理存储起来can_user= []for proxie in proxies_list:#发送一个请求以便得到该代理的状态码try:response = proxie.get(url='https://www.baidu.com',proxies=proxie,timeout=2)if response.status_code == 200: #如果该IP访问百度后,返回的状态码为200时,说明该地阿里可以使用#将该代理保存起来can_user.append(proxie)except:print('当前代理:',proxie,'请求时间过长不可用')#如果代理可用则执行else中的语句else:print('当前代理:', proxie, '可以使用')return can_user

这里我要说的重点是:

response.status_code == 200

通过向特定的网页发起get请求,以返回状态码来检测该IP数据是否正常可用,如果在有限的时间中它返回的状态码为200说明该IP数据是正常可用的。

通过方法的调用来让该检测代码段运行起来:

can_user = check_ip(proxies_list)
print('可以使用的代理:',can_user)
print('可以使用的代理数量为:',len(can_user))

这里我要说的是:通过check_ip()方法调用并且向该方法传递一个参数”proxies_list“,该参数是我们定义的用来存储在ip提供商那里爬取全部IP数据,通过调用该方法,并且将未进行识别的ip数据传入。让检测程序代码段运行起来,获取可供使用IP数据

文章的最后,我要说的是,希望大家能感激每一位资源的提供者,只有消费才会产生价值,带动市场,我们应该尊重劳动者的辛苦劳作。

完整代码段:

#建立步骤:
'''
爬取提供免费代理的网站数据(ip地址 端口号,地址信息)1.寻找数据地址2.发送请求3.需要的数据(页面解析保存下来),或者不需要的数据(剔除)4.需要的数据保存(IP地址,端口,拼接https://)'''
import time
import requests
# 安装parsel时报错,经过排查应该是镜像源的问题(网络上说是尽量使用国内镜像源,国外网速不行,我使用的就是阿里云的镜像)应该是阿里云的镜像不行,我换了一个豆瓣的镜像源
#具体使用办法在安装包的后面添加上,通过那个镜像源:pip install parsel -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com   把”库包名“换成你要安装的包的名称即可;
import parsel
#使用代理:
#定义一个函数:
def check_ip(proxies_list):""" 代理检测"""#将高质量可用代理存储起来can_user= []for proxie in proxies_list:#发送一个请求以便得到该代理的状态码try:response = proxie.get(url='https://www.baidu.com',proxies=proxie,timeout=2)if response.status_code == 200: #如果该IP访问百度后,返回的状态码为200时,说明该地阿里可以使用#将该代理保存起来can_user.append(proxie)except:print('当前代理:',proxie,'请求时间过长不可用')#如果代理可用则执行else中的语句else:print('当前代理:', proxie, '可以使用')return can_user#1.寻找数据的地址
proxies_list = []
for page in range(1,8):print(f"===========正在爬取第{page}====================")time.sleep(1)url = 'http://www.ip3366.net/free/?stype=1&page={page_turn}'.format(page_turn=page) #服务器获取数据
#浏览器的身份标识headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}response = requests.get(url=url,headers=headers)#指定一个编码 = 获取一个编码response.encoding = response.apparent_encodinghtml_data = response.text#3.数据解析 使用xpath 方法,xpath专门用于解析html页面selector = parsel.Selector(html_data) #转换数据类型# print(selector)trs = selector.xpath('//table/tbody/tr')# print(trs)#将拼接好的完整地址保存在一个名为proxies_list的列表中#遍历每一个tr标签for tr in trs:ip = tr.xpath('./td[1]/text()').get()adr = tr.xpath('./td[2]/text()').get()# print(ip,adr)proxies_dict = {#字符串的拼接"http":"http://"+ip+":"+adr,"https":"https://"+ip+":"+adr,}proxies_list.append(proxies_dict)print('获取成功',proxies_dict)#break 次break是为了检测第一页数据返回是否正常,其实我获取的所有免费代理
print(proxies_list)
print('获取的代理数据为:',len(proxies_list))# proxies_list.append(proxies_dict)
print('==========================正在检测代理======================')
can_user = check_ip(proxies_list)
print('可以使用的代理:',can_user)
print('可以使用的代理数量为:',len(can_user))

Python搭建自己[IP代理池]相关推荐

  1. python爬虫:多线程收集/验证IP从而搭建有效IP代理池

    文章目录 搭建代理IP池 (1)IP来源 (2)初步收集IP (3)可用性检验 (4)IP池存储展示 (5)单线程IP池完整实现 (6)多线程IP验证 搭建代理IP池 (1)IP来源 了解到代理IP及 ...

  2. 搭建简易IP代理池及使用方法

    搭建简易IP代理池 ip池的搭建 以及使用自定义模块 准备工作 如何使用自定义的ip池 生成一个适合你的列表 创建一个表格 设定内容居中.居左.居右 SmartyPants 创建一个自定义列表 如何创 ...

  3. Python创建免费Ip代理池,伪装Ip。

    Python创建免费Ip代理池 主要使用requests第三方库.欸嘿,有了这个,就不用花钱买Ip了,生活小妙招.妙哇. 一.具体思路 1.利用requests爬取免费代理Ip的网页 2.存储列表后, ...

  4. (廿九)Python爬虫:IP代理池的开发

    作为一个爬虫开发者,使用IP代理是必要的一步,我们可以在网上找到免费的高匿IP,比如西刺代理.但是,这些免费的代理大部分都是不好用的,经常会被封禁.所以我们转而考虑购买付费代理.可是,作为一个程序员首 ...

  5. Python爬虫——建立IP代理池

    在使用Python爬虫时,经常遇见具有反爬机制的网站.我们可以通过伪装headers来爬取,但是网站还是可以获取你的ip,从而禁掉你的ip来阻止爬取信息. 在request方法中,我们可以通过prox ...

  6. python代理池_进击:用Python搭建高匿代理池

    Email: WlRCME0zSjRRR2R0WVdsc0xtTnZiUT09 0x01 写在前面 常听到很多人抱怨自己的IP因爬虫次数太多而被网站屏蔽,不得不频繁使用各种代理IP,却又因为网上的公开 ...

  7. Python 实现搭建本地IP代理池

    本文仅供学习交流使用,如侵立删!demo下载见文末 爬取:66ip免费代理 def get_66ip(self):"""抓取66ip免费代理:return:"& ...

  8. 手把手教你用Python搭建IP代理池,轻松破解请求频率限制反爬虫~

    我们所写的爬虫,它对服务器发出的网络请求频率要比正常用户的高的多,从而开发者可以将请求频率过高的用户视为爬虫程序,从而来限制爬虫程序. 今天志斌就来给大家分享一下,如何用Python搭建一个IP代理池 ...

  9. 手把手教你用Python搭建IP代理池

    今天给大家分享一下,如何用Python搭建一个IP代理池,来破解服务器通过对用户请求频率进行限制的反爬虫. 01 原理 因为客户端的IP地址是唯一的,所以开发者便将IP地址作为客户端的身份标识. 服务 ...

最新文章

  1. 并发 IO多路复用 select 非asyncio
  2. 【C 语言】字符串模型 ( strstr-do…while 模型 )
  3. 计算硼原子的基态能级的java程序
  4. Hologres揭秘:深度解析高效率分布式查询引擎
  5. 我的Python成长之路---第一天---Python基础(5)---2015年12月26日(雾霾)
  6. PCM复用设备的安装和使用注意事项
  7. 四种类型转换 cast
  8. 量子计算机的系统论思考,量子计算机发展带来的思考..doc
  9. 常用命令-JAVA大数据-Week5-DAY2-linux
  10. 蘑菇街移动端混合开发体系的研发与实践
  11. 使用DTS迁移12cR2到 dm8
  12. 使用 Python 进行人脸识别(第2部分)
  13. 项目经理要“谋定而后动,知止而有得,万事皆有法,不可乱也”
  14. 什么是域名解析?如何设置域名解析?
  15. 【KGAT】Knowledge Graph Attention Network for Recommendation
  16. 2020年7月大学英语六级作文
  17. 机器人搏击大赛冠军_喜报|2019中国智能机器人格斗大赛,石大学子在轮式自主格斗A、B组中包揽双冠!...
  18. 用python编写nao机器人舞蹈_python实现nao机器人身体躯干和腿部动作操作
  19. MATLAB图形加标注的基本方法入门简介
  20. 阿里CEO张勇解读入股高鑫零售:婚后怎么过日子已经谈得很好了

热门文章

  1. stm32 cortex M3 汇编指令集 英文详解
  2. adobe reader java_使用Adobe Reader控件结合Java实现PDF打印功能
  3. 无人驾驶-从零入门(一)
  4. Metaverse概念火热,基础设施搭建不容忽视
  5. LoadRunner安装教程
  6. bzoj4808: 马(最小割)
  7. 矩阵理论| 特殊矩阵:酉矩阵、旋转与镜射
  8. 电动汽车自燃事故及原因汇总
  9. 关于指令集AVX AVX2学习笔记
  10. 震惊科学界!DeepMind AI破解「蛋白质折叠」难题