获得代理ippython_python爬虫之抓取代理服务器IP

2023-10-26

前言

使用爬虫爬取网站的信息常常会遇到的问题是,你的爬虫行为被对方识别了,对方把你的IP屏蔽了,返回不了正常的数据给你。那么这时候就需要使用代理服务器IP来伪装你的请求了。

免费代理服务器网站有:

下面我们以西刺免费代理IP为例子看看是如何获取可用IP的。主要分为以下几个步骤:

请求url,获取网页数据

解析网页数据,找到包含【IP地址】和【端口】信息的节点,解析出这两个数据

验证取得的【IP地址】和【端口】信息是否可用

将验证可用的【IP地址】和【端口】信息保存起来(暂存到列表,或保存到文件,保存到数据库)

1. 请求网页数据

请求网页数据是使用requests库去做网络请求的,填入url,和header头部信息,使用get请求方式去请求,得到response相应后,返回response.text即是响应的文本内容,即网页文本内容。

# 请求url,获取网页数据

def _requestUrl(index):

src_url = 'http://www.xicidaili.com/nt/'

url = src_url + str(index)

if index == 0:

url = src_url

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0'

}

response = requests.get(url, headers=headers)

return response.text

用浏览器打开网址看一下

python获取代理服务器ip

2. 解析网页数据

返回正确的网页数据之后,就可以开始对它进行解析了,这里使用BeautifulSoup库进行网页内容解析。如果是Chrome浏览器,按f12可以查看网页源码,如图

python获取代理服务器ip

找到某个tr行,第1个和第2个td列就是是ip和端口信息,因此我们可以用BeautifulSoup查找所以的tr行,再查找该tr行的第1个和第2个td列即可以获取该页面上所有的ip和端口信息了。

# 解析网页数据,获取ip和端口信息

def parseProxyIpList(content):

list = []

soup = BeautifulSoup(content, 'html.parser')

ips = soup.findAll('tr')

for x in range(1, len(ips)):

tds = ips[x].findAll('td')

ip_temp = 'http://' + tds[1].contents[0] + ':' + tds[2].contents[0]

print('发现ip:%s' % ip_temp)

list.append(ip_temp)

return list

3. 验证IP和端口是否可用

解析到页面上的所有ip和端口信息后,还需要验证它是否是有效的,然后对它们进行过滤,获取有效的ip列表。验证方法就是使用它作为代理地址,去请求网络,看是否能请求成功,如果请求成功,说明是有效的。当然,这里需要加上超时时间,以避免等待时间过长,这里设置超时时间为5秒。

# 过滤有效的ip信息

def filterValidProxyIp(list):

print('开始过滤可用ip 。。。')

validList = []

for ip in list:

if validateIp(ip):

print('%s 可用' % ip)

validList.append(ip)

else:

print('%s 无效' % ip)

return validList

# 验证ip是否有效

def validateIp(proxy):

proxy_temp = {"http": proxy}

url = "http://ip.chinaz.com/getip.aspx"

try:

response = requests.get(url, proxies=proxy_temp, timeout=5)

return True

except Exception as e:

return False

4. 发起请求,保存可用IP和端口信息

接下来要开始调用以上代码了。这里只爬取第1页数据

# 获取可用的代理ip列表

def getProxyIp():

allProxys = []

startPage = 0

endPage = 1

for index in range(startPage, endPage):

print('查找第 %s 页的ip信息' % index)

# 请求url,获取网页数据

content = _requestUrl(index)

# 解析网页数据,获取ip和端口信息

list = parseProxyIpList(content)

# 过滤有效的ip信息

list = filterValidProxyIp(list)

# 添加到有效列表中

allProxys.append(list)

print('第 %s 页的有效ip有以下:' % index)

print(list)

print('总共找到有效ip有以下:')

print(allProxys)

return allProxys

运行该爬虫程序之后,就可以开始爬取代理服务器信息了。如图

python获取代理服务器ip

python获取代理服务器ip

python获取代理服务器ip

总结

通过以上步骤就可以获取有效的代理服务器IP信息了,其他代理服务器IP网站的获取方式和这个大同小异,主要在于解析网页数据那里,需要找到包含IP和端口数据的标签,然后解析获取到。有了代理服务器IP,你就可以爬取更多网站的信息了。

还有个问题是,网站可能会对某个IP检测,如果超过一定请求次数,就会对其进行屏蔽,那这样会导致程序中断,无法获取所有的信息,这如何解决呢?欢迎关注我的微信公众号hesong,了解具体应对方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获得代理ippython_python爬虫之抓取代理服务器IP 的相关文章

  • 使用NPM发布uni-app,Vue自定义组件

    使用NPM发布uni app以及vue自定义组件 使用npm install 安装他人发布的组件平时用的比较多 操作也比较简单 最近自己捣鼓了一下 如何发布自己的自定义组件方便自己和他人使用npm install 安装 编写组件 第一步是本
  • 多线程进阶(下)

    目录 一 JUC 二 线程安全的集合类 三 死锁 一 JUC 这里的juc指的是java util concurrent 并发 多线程相关的 一个标准库中的类 下面是JUC里面的常见类 Callable 这是一个interface 也是一种
  • 样本选择模型 & 处理效应模型

    一 样本选择偏差与自选择偏差 样本选择偏差 样本选择偏差的非随机选择机制在于对样本的选择不随机 在样本数据的采集过程中 只对某部分群体进行调查 但这部分群体与其他群体在某些方面的特征差异较大 因此根据这样的样本做回归得到的普适性结论并不可信
  • iOS自定义下拉刷新控件

    自定义下拉刷新控件 概述 用了很多的别人的下拉刷新控件 想写一个玩玩 自定义一个在使用的时候也会比较有意思 使应用更加的灵动一些 毕竟谁不喜欢各种动画恰到好处的应用呢 使用方式如下 tableview refreshControl XRef
  • 运维实践

    欢迎关注 WeiyiGeek 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 全栈实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 作者主页 ht
  • 初级1 题目二 选择排序

    1 选择排序和冒泡排序很类似 不过冒泡排序是两两比较 每次确定一个元素的位置 而选择排序是一个和其他所有未确定的元素进行比较 然后确定位置 include
  • 如何提高影响力?

    一 什么是影响力 1 通俗的讲 影响力就是影响他人的能力 二 为什么需要提高 1 可以让工作更高效 2 可以让生活更惬意 三 提高影响力的切入点 1 乐于助人与虚心求教 1 1 每个人都会遇到困难 在别人遇到困难的时候 帮助其一下 不要担心
  • js 数组根据字段分组

    在平时的开发中 难免会遇到需要对接口获取的数据进行处理 例如以下数据 const arr a 系列1 b 2 c 3 a 系列2 b 2 c 3 a 系列3 b 2 c 3 我们需要对a字段进行分组 将b和c字段单独取出来 那么我们就可以用
  • 微信小程序注册入口和注册流程(完整版图文教程)

    微信小程序注册是免费的 在腾讯云微信公众平台即可注册 无论是个人 企业都可以免费注册微信小程序 先输入邮箱注册激活 然后填写主体类型对应的证件信息 最后管理员身份验证使用维信扫一扫即可 小程序5来详细说下微信小程序注册入口和微信小程序注册流
  • 下载Android特定模块的源代码

    原文地址 http www apkbus com android 18828 1 1 html 开发中要模仿Android系统中某些应用的特性 需查看其源代码 关于Android源码的介绍见 http source android com
  • Go依赖管理及Go module使用

    目录 一 依赖管理 二 为什么需要依赖管理 三 godep 3 1 安装 3 2 基本命令 3 3 使用godep 3 4 vender机制 3 5 godep开发流程 四 go module 4 1 GO111MODULE 4 2 GOP
  • 周杰伦演唱会总是抢不到票?教你用Python做一个自动抢票脚本

    相信想去周董演唱会的大家都用过大麦网抢票吧 可是 抢不到啊 该说不说 我抢到了 那么 今天带大家用Python来制作一个自动抢票的脚本小程序 知识点 面向对象编程 selenium 操作浏览器 pickle 保存和读取Cookie实现免登陆
  • 微信公众号分享功能 errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20210130 10:16:32][]“

    H5 分享 请求分享页面时 系统错误 errMsg config fail Error 系统错误 错误码 63002 invalid signature 20210130 10 16 32 解决方案 报错信息 签名错误 需要检查自己的签名是
  • 反转数组(两种方法)

    a 第一种方法 创建一个新数组接收并返回 var arr1 1 2 3 var arr2 reverse1 arr1 console log arr2 console log reverse1 arr1 定义一个新数组 把老数组中的元素反向
  • UsbWebserver + MySQL + Apache的和环境配置问题(主要是连不上MySQL的问题)

    问题1 Apche感叹号 是因为软件路径中含有中文 可以把文件转移到没中文的路径下 问题2 mysqli connect Server sent charset 255 unknown to the client php集成环境 usbwe
  • 电子闹钟设计

    摘要 本设计是以89c51单片机作为控制核心的闹铃系统 本文大致可以分三个章节 第一章讲用单片机制作电子闹钟带来的优势 还有电子闹钟在未来的电子产品中的趋势以及本次设计所要实现的课题目标 第二章讲一些设计思路和硬件组成 第三讲程序代码 最后
  • CVE10大漏洞总结【网络安全】

    1 OpenSSL心脏出血漏洞 漏洞描述 这项严重缺陷 CVE 2014 0160 的产生是由于未能在memcpy 调用受害用户输入内容作为长度参数之前正确进行边界检查 攻击者可以追踪OpenSSL所分配的64KB缓存将超出必要范围的字节信
  • std::string::replace使用小计

    ctrl c ctrl v 真是害死人 看起来简单的东西 往往却又很容易出问题 究其原因 还在于只知其表不知其里 容易想当然 今天遇到的问题是简单调用string replace替换子串的问题 如 std string sTest1 12x
  • web服务器开发课程项目实训,Web前端开发实训案例教程(初级)

    目 录 第1章 实践概述 1 1 1 实践目标 1 1 2 实践知识地图 1 1 3 实施安排 6 1 3 1 实验部分 技术专题 6 1 3 2 综合实践部分 11 第2章 网页设计与制作 19 2 1 实验目标 19 2 2 实验任务

随机推荐

  • FTP命令详解

    FTP命令是Internet用户使用最频繁的命令之一 不论是在DOS还是UNIX操作系统下使用FTP 都会遇到大量的FTP内部命令 熟悉并灵活应用FTP的内部命令 可以大大方便使用者 并收到事半功倍之效 FTP的命令行格式为 ftp v d
  • bytebuffer 使用demo

    pom文件
  • 微信小程序路由

    wx reLaunch Object object 关闭所有页面 打开到应用内的某个页面 一般是跳转到首页使用 例 wx reLaunch url url wx navigateTo Object object 保留当前页面 跳转到应用内的
  • Java时间转换问题 [Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.

    1 错误提示代码 default message Failed to convert property value of type java lang String to required type java 2 分析原因 遇到java接收
  • macOS 系统下安装Lua及lua-cjson

    macOS 系统下安装Lua及lua cjson lua安装及部署 具体操作步骤如下 curl R O http www lua org ftp lua 5 2 3 tar gz tar zxf lua 5 2 3 tar gz cd lu
  • 豆瓣读书top250数据爬取与可视化

    爬虫 scrapy 题目 根据豆瓣读书top250 根据出版社对书籍数量分类 绘制饼图 搭建环境 import scrapy import numpy as np import pandas as pd import matplotlib
  • UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(三)SG_CopyPointsWithHierarchy

    继续解析 Electric Dreams 项目中的自定义节点和子图 SG CopyPointsWithHierarchy和PostCopyPoints OffsetIndices 文章目录 前导文章 标准组合拳 SG CopyPointsW
  • STM32开发中各库函数的主要作用和关系。

    STM32开发中各库函数的主要作用和关系 STM32各库函数关系的简单解析 您好 这是我第一次使用 CSDN来发布文章 如果有排版不合理 结构凌乱 欢迎私信我交流经验 文章内容如有错误 欢迎读者指正 首先我们了解一下什么是库函数 众所周知
  • 常见的几种开源协议

    在学习中经常能看到一些词 例如 GPL LGPL等等 自打上学那会就遇见过 对它们的具体含义却不了解 今天给它们总结一下 说到开源协议 不得不提GNU 课本上给的定义是 GNU is Not Unix 这是官方给出的递归定义 永远也找不到本
  • Linux基础服务3——samba

    文章目录 一 基本了解 1 1 服务安装 1 2 服务进程和端口 1 3 samba用户 1 4 配置文件 1 4 1 主配置文件 1 4 2 配置文件参数 1 5 安全级别 二 访问samba 2 1 参数测试 2 2 交互式访问 2 3
  • 多线程进阶学习10------AQS详解

    AbstractQueuedSynchronizer 来自于JDK1 5 位于JUC包 由并发编程大师Doug Lea编写 字面翻译就是 抽象队列同步器 简称为AQS AQS作为一个抽象类 是构建JUC包中的锁 比如ReentrantLoc
  • Netty工作原理最详细分析

    NIO通讯服务端步骤 1 创建ServerSocketChannel 为它配置非阻塞模式 2 绑定监听 配置TCP参数 录入backlog大小等 3 创建一个独立的IO线程 用于轮询多路复用器Selector 4 创建Selector 将之
  • 面试嵌入式工程师过程中的常见问题和回答

    1 请介绍一下你的嵌入式系统开发经验 an 首先 回答此类问题时应该尽可能地详细和具体 可以从以下方面介绍自己的嵌入式系统开发经验 1 开发环境和工具 介绍自己使用过哪些开发环境和工具 例如Keil IAR Eclipse等 可以说明自己对
  • Java之变量、标识符、保留字、变量

    文章目录 1 关键字与保留字 2 标识符 2 1 什么是标识符 Identifier 2 2 定义合法标识符规则 重要 2 3 Java 中的名称命名规范 3 变量 3 1 变量的声明与使用 3 2 基本数据类型 3 2 1 整数类型 by
  • Java---TCP通信

    目录 1 TCP通信 快速入门 编写客户端代码 步骤 客户端发送消息 总结 需求 服务端实现步骤 总结 2 TCP通信 多发多收消息 案例 使用TCP通信实现 多发多收消息 总结 3 TCP通信 同时接受多个客户端消息 重点 总结 4 TC
  • 简单解析transformer代码

    详解transformer代码 文章目录 详解transformer代码 1 代码下载 2 prepro py 2 1 首先进行语料预处理阶段 2 2 生成预处理过后的对应数据集 2 3 sentencepiece处理 3 data loa
  • 028-从零搭建微服务-搜索服务(二)

    写在最前 如果这个项目让你有所收获 记得 Star 关注哦 这对我是非常不错的鼓励与支持 源码地址 后端 https gitee com csps mingyue 源码地址 前端 https gitee com csps mingyue u
  • FISCO BCOS节点扩容和使用console进行群组扩容

    一 安装并启动FISCO BCOS 搭建单机单群组4节点的教程查看 https blog csdn net yueyue763184 article details 128924144 spm 1001 2014 3001 5501 二 下
  • 最小优先级队列 — 使用最小堆实现

    最小优先级支持的操作 1 INSERT S x 将元素x插入队列S 2 MINIMUM S 返回S中最小的元素 3 EXTRACT MIN S 去掉并返回S中最小的元素 4 DECREASE KEY S x key 将下标为x的元素值降低为
  • 获得代理ippython_python爬虫之抓取代理服务器IP

    前言 使用爬虫爬取网站的信息常常会遇到的问题是 你的爬虫行为被对方识别了 对方把你的IP屏蔽了 返回不了正常的数据给你 那么这时候就需要使用代理服务器IP来伪装你的请求了 免费代理服务器网站有 下面我们以西刺免费代理IP为例子看看是如何获取