获取中国某省份的ip地址,随机IP

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 该代码使用Python爬取福建省的IP段数据,通过requests和lxml库获取网页内容并解析,提取省、市、区及IP段信息,保存到Pandas DataFrame中。接着根据IP段随机生成IP地址,并将结果写入Excel文件。
import requests
from lxml import etree
import pandas as pd
import random

# 福建省ip段的url地址
url = "http://ip.khcha.com/ipsection_view.aspx?fl=2&type=S_FJ"

page_text = requests.get(url=url)

html = etree.HTML(page_text.text)

# 获取第一层的地区列表url
ul_ui_list = html.xpath('//*[@class="navr"]/ul/li')

# 创建一个空的列表
data_lst = []

# 构造下一级的url-- 省市级
for i in ul_ui_list:
    if len(i.xpath('.//@href')) > 0:
        new_url = "http://ip.khcha.com/" + i.xpath('.//@href')[0]  # 组合下一级的url
        page_text_next =  requests.get(url=new_url)
        html_next = etree.HTML(page_text_next.text)  # 获取网页数据

        ul_ui_list_next = html_next.xpath('//*[@class="navr"]/ul/li')

        # 构造市区级url
        for i_next in ul_ui_list_next:
            if len(i_next.xpath('.//@href')) > 0:
                new_url_next = "http://ip.khcha.com/" +  i_next.xpath('.//@href')[0]

                html_next_next = etree.HTML(requests.get(url=new_url_next).text)

                data_list = html_next_next.xpath('//*[@class="mainright"]/ul/li')

                for data in data_list:
                    parse_list = new_url_next.split('&')
                    province = '福建省'
                    city = parse_list[1].split('=')[1]
                    area = parse_list[2].split('=')[1]
                    l_ip = data.xpath('.//span[@class = "l"]/text()')[0]
                    r_ip = data.xpath('.//span[@class = "r"]/text()')[0]
                    lst = [province, city, area, l_ip, r_ip]
                    data_lst.append(lst)

            else:
                continue

    else:
        continue



# 根据IP段随机生成ip
# 根据起始ip,确定该段中的ip数量
columns = ['province','city','area','start_ip','end_ip']
df = pd.DataFrame(data_lst,columns=columns)

# 定义一个空的DataFrame,用来存放生成的新的数据
columns_new = ["province","city","area","ip"]
data_frame = pd.DataFrame(columns=columns_new)

# 遍历DataFrame,生成随机ip段
print(len(df))
print("++++++++++++++++++++++++++++++++++++++")
for index,rows in df.iterrows():
    start_ip = rows['start_ip']
    end_ip = rows['end_ip']
    # 通过观察,发现ip前两个号段是一致的
    # 随机IP的前缀
    pre_ip = '.'.join(start_ip.split('.')[0:2]) + '.'   # 122.9.
    # 计算该组区间之间的ip数量
    ip_num = (int(end_ip.split('.')[2]) - int(start_ip.split('.')[2]) + 1) * (int(end_ip.split('.')[3]) - int(start_ip.split('.')[3]) + 1)

    print(ip_num)
    print("**********************************")
    # 每个区段选择总数的1/10 整个福建省大约60万+
    for i in range(ip_num // 10):
        random_ip_3 = random.randint(int(start_ip.split('.')[2]), int(end_ip.split('.')[2]))   # 随机生成ip第三位
        random_ip_4 = random.randint(int(start_ip.split('.')[3]), int(end_ip.split('.')[3]))   # 随机生成ip第四位
        post_ip  = str(random_ip_3) + '.' + str(random_ip_4)       #  组成新的ip的后两个地址信息
        new_ip = pre_ip + post_ip  # 构造新的ip地址

        # 组合数据,写入DataFrame
        combined_strings = [rows['province'], rows['city'], rows['area'], new_ip]
        print(len(data_frame))
        data_frame.loc[len(data_frame)] = combined_strings  # 将组合的数据追加到DataFrame中
        print(data_frame.head())
        print("===================================================")

# 将DataFrame中的数据导入到excel中
excel_path = "ip_福建.xlsx"
data_frame.to_excel(excel_path, index=False)




相关文章
|
2月前
|
存储 测试技术 开发者
NVFP4量化技术深度解析:4位精度下实现2.3倍推理加速
本文深入解析NVIDIA推出的NVFP4量化技术,探讨其在Blackwell GPU架构下的性能优势。通过对比主流4位量化方法,分析NVFP4在精度、内存和推理吞吐量方面的表现,结合LLM-Compressor与vLLM框架展示量化与部署实践,验证其在消费级与企业级应用中的高效性与实用性。
392 15
NVFP4量化技术深度解析:4位精度下实现2.3倍推理加速
|
8月前
|
人工智能 数据挖掘
低代码 + AI 落地实践,让业务效率翻倍,解锁未来生产力!
2025年春节,DeepSeek引发AI讨论热潮,推动“数字化”到“数智化”的革新。低代码+AI组合降低了技术门槛,加速企业智能化升级。文中通过食品加工业原料溯源、家电售后管理、发票识别打印三个案例,展示其在效率提升和市场竞争力中的作用,并介绍钉钉宜搭举办的“低代码+AI”视频创作大赛,邀请读者参与探索更多实际应用。
959 9
|
8月前
|
缓存 自然语言处理 安全
快速调用 Deepseek API!【超详细教程】
Deepseek 强大的功能,在本教程中,将指导您如何获取 DeepSeek API 密钥,并演示如何使用该密钥调用 DeepSeek API 以进行调试。
|
12月前
Doris动态分区表
Doris动态分区表 Doris动态分区表传参
|
8月前
|
设计模式 Java Spring
设计模式1:工厂模式
本文是小卷学习设计模式系列的开篇,主要介绍了工厂模式及其在框架中的应用。工厂模式属于创建型设计模式,分为简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式由一个工厂类根据参数创建对象;工厂方法模式通过子类实现具体对象的创建;抽象工厂模式用于创建多个相关联的对象族。文中还展示了Spring的`BeanFactory`和SLF4J的`LoggerFactory`作为实际案例。
149 10
|
8月前
|
人工智能 安全 数据库
AiCodeAudit-基于Ai大模型的自动代码审计工具
本文介绍了基于OpenAI大模型的自动化代码安全审计工具AiCodeAudit,通过图结构构建项目依赖关系,提高代码审计准确性。文章涵盖概要、整体架构流程、技术名词解释及效果演示,详细说明了工具的工作原理和使用方法。未来,AI大模型有望成为代码审计的重要工具,助力软件安全。项目地址:[GitHub](https://github.com/xy200303/AiCodeAudit)。
|
8月前
|
缓存 安全 Java
面试中的难题:线程异步执行后如何共享数据?
本文通过一个面试故事,详细讲解了Java中线程内部开启异步操作后如何安全地共享数据。介绍了异步操作的基本概念及常见实现方式(如CompletableFuture、ExecutorService),并重点探讨了volatile关键字、CountDownLatch和CompletableFuture等工具在线程间数据共享中的应用,帮助读者理解线程安全和内存可见性问题。通过这些方法,可以有效解决多线程环境下的数据共享挑战,提升编程效率和代码健壮性。
274 6
|
12月前
|
调度
Doris给动态分区添加历史分区问题汇总
Doris动态分区表添加历史分区
|
新能源
【2023年第十三届APMCM亚太地区大学生数学建模竞赛】C题 中国新能源电动汽车的发展趋势 44页论文、数据及代码
本文在2023年第十三届APMCM亚太地区大学生数学建模竞赛中针对中国新能源电动汽车的发展趋势进行深入研究,建立了多元线性回归、时间序列和机理模型,分析了影响因素、预测了未来发展趋势,并探讨了对全球汽车产业及生态环境的影响,提供了相应的政策分析和市民宣传信。
440 2
|
JavaScript 索引
JS判断数组是否包含某个元素
JS判断数组是否包含某个元素
813 1