当前位置: 首页 > news >正文

Python实例题:Python自动获取海量IP工具

目录

Python实例题

题目

实现思路

代码实现

代码解释

get_proxy_list 函数:

check_proxy_validity 函数:

save_valid_ips 函数:

主程序:

运行思路

注意事项

Python实例题

题目

Python自动获取海量IP工具

实现思路

  • 发送网络请求:借助 requests 库向代理 IP 网站发送请求,从而获取包含 IP 信息的网页内容。
  • 解析网页内容:利用 BeautifulSoup 库解析 HTML 页面,提取出 IP 地址和端口号。
  • 验证 IP 有效性:通过向特定网站发送请求,检验 IP 是否可用。
  • 存储有效 IP:把有效的 IP 存储到文件或者数据库中。

代码实现

import requests
from bs4 import BeautifulSoup
import random
import time# 目标网站 URL
target_url = 'https://www.89ip.cn/index_{}.html'
# 测试 IP 有效性的网站
test_url = 'https://www.baidu.com'
# 存储有效 IP 的列表
valid_ips = []def get_proxy_list(page_num):"""从指定页面获取代理 IP 列表:param page_num: 页面编号:return: 代理 IP 列表,每个元素为 (IP 地址, 端口号)"""url = target_url.format(page_num)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}try:response = requests.get(url, headers=headers)response.encoding = response.apparent_encodingsoup = BeautifulSoup(response.text, 'html.parser')table = soup.find('table', class_='layui-table')if table:rows = table.find_all('tr')[1:]proxy_list = []for row in rows:cols = row.find_all('td')ip = cols[0].text.strip()port = cols[1].text.strip()proxy_list.append((ip, port))return proxy_listexcept Exception as e:print(f"获取页面 {page_num} 时出错: {e}")return []def check_proxy_validity(proxy):"""检查代理 IP 是否有效:param proxy: 代理 IP,格式为 (IP 地址, 端口号):return: 代理 IP 是否有效"""ip, port = proxyproxies = {'http': f'http://{ip}:{port}','https': f'https://{ip}:{port}'}try:response = requests.get(test_url, proxies=proxies, timeout=5)if response.status_code == 200:return Trueexcept Exception:passreturn Falsedef save_valid_ips():"""将有效 IP 保存到文件"""with open('valid_ips.txt', 'w') as f:for ip, port in valid_ips:f.write(f'{ip}:{port}\n')if __name__ == "__main__":# 抓取前 5 页的 IPfor page_num in range(1, 6):proxy_list = get_proxy_list(page_num)if proxy_list:for proxy in proxy_list:if check_proxy_validity(proxy):valid_ips.append(proxy)print(f"有效 IP: {proxy[0]}:{proxy[1]}")# 随机延时,避免被反爬机制封禁time.sleep(random.uniform(1, 3))# 保存有效 IP 到文件save_valid_ips()print("有效 IP 已保存到 valid_ips.txt 文件中。")

代码解释

  • get_proxy_list 函数

    • 依据传入的页面编号,构建目标 URL。
    • 发送 HTTP 请求获取页面内容。
    • 运用 BeautifulSoup 解析 HTML 页面,提取 IP 地址和端口号。
    • 返回代理 IP 列表。
  • check_proxy_validity 函数

    • 构建代理字典,包含 http 和 https 代理。
    • 向测试网站发送请求,设置超时时间为 5 秒。
    • 若响应状态码为 200,则认为该 IP 有效。
  • save_valid_ips 函数

    • 把有效 IP 列表中的 IP 地址和端口号保存到 valid_ips.txt 文件中。
  • 主程序

    • 循环抓取前 5 页的 IP 信息。
    • 对每个 IP 进行有效性检查,若有效则添加到 valid_ips 列表中。
    • 每次检查后随机延时 1 - 3 秒,防止被反爬机制封禁。
    • 最后将有效 IP 保存到文件中。

运行思路

  • 安装依赖库:确保已经安装了 requests 和 beautifulsoup4 库,可使用 pip install requests beautifulsoup4 进行安装。
  • 运行脚本:在终端中运行 python ip_fetcher.py,脚本会自动抓取 IP 信息并进行有效性检查。
  • 查看结果:脚本运行结束后,有效 IP 会被保存到 valid_ips.txt 文件中。

注意事项

  • 反爬机制:不同的代理 IP 网站有不同的反爬机制,频繁请求可能会导致 IP 被封禁。可以通过设置请求头、控制请求频率、使用代理 IP 等方式绕过反爬机制。
  • IP 质量:免费代理 IP 的质量参差不齐,可能存在不稳定、速度慢等问题。在实际使用中,需要根据需求选择合适的代理 IP。
  • 合法性:确保获取和使用代理 IP 的行为符合相关法律法规和网站的使用条款。

相关文章:

  • 施工现场针对性安全操作规范与施工现场用电安全隐患
  • 4.15 代码随想录第四十四天打卡
  • Beyond Compare:多平台文件对比工具
  • 零售业如何数字化转型
  • 数据分析实战案例:使用 Pandas 和 Matplotlib 进行居民用水
  • 设计模式:状态模式 - 复杂状态切换的优雅之道
  • Golang|select
  • 3. Framer Motion 中 motion 组件
  • 【目标检测】【YOLO综述】YOLOv1到YOLOv10:最快速、最精准的实时目标检测系统
  • Flutter 播放利器:`media_kit` 的详细介绍与使用指南
  • 在GitHub action中使用添加项目中配置文件的值为环境变量
  • Apache Kafka UI :一款功能丰富且美观的 Kafka 开源管理平台!!
  • Golang|Kafka在秒杀场景中的应用
  • day29图像处理OpenCV
  • gitlab如何查看分支的创建时间
  • tomcat http 怎么改成 https
  • 如何安全地管理固定功能设备?
  • STM32移植文件系统FATFS——片外SPI FLASH
  • 房天下平台API接口开发指南
  • Android12 自定义系统服务
  • 英伟达:美国无法操纵监管机构在AI领域取胜,美企应专注创新而不是编造荒诞谣言
  • 国内多景区实行一票游多日:从门票经济向多元化“链式经济”转型
  • 美国证实加拿大及墨西哥汽车零部件免关税
  • 2025年第一批“闯中人”已经准备好了
  • 全国人大常委会关于授权国务院在中国(新疆)自由贸易试验区暂时调整适用《中华人民共和国种子法》有关规定的决定
  • 排除燃气爆炸、人为放火可能,辽宁辽阳火灾事故起火原因正在调查