Python爬虫系列3-通过Ip地址定位目标所在区域

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 在现如今的互联网时代,我们越来越依赖网络,甚至网络已经融入了我们的日常生活,甚至没有办法想象如果没有了网络,会造成什么样的情景?。。。
在进行下面环节的时候我们需要先明白一个点:什么是IP地址 ?
IP地址:IP地址分为局域网和广域网两种。它在全球范围内实现了不同硬件结构、不同操作系统、不同网络系统的互联。在整个Internet中,每一个节点都依靠唯一的IP地址互相区分和相互联系。
有网络的地方就一定有IP,因为IP地址的存在是构成现如今整个Internet的基础;非常的重要,而且每一台计算机只要连网了,都无权自行去设定属于自己的IP地址,估计大家会有一个疑惑?那IP地址是怎么来的呢?这会有一个统一的机构进行管理;在此我们先不过多去描述。

- 实战

这里我们分析的是专门做IP地址的一个大数据统计平台。

分析网站结构,确定我们要抓取的数据内容

image.png

经过分析,该网站的结构非常的简单,没有什么特别的,下面是我们需要抓取的内容;但在这里我运用了图形界面来做。
image.png

我们的需求是这样的:

1、有一个可被用户输入ip地址的输入框

2、一个可被用户点击确定要查询的按钮

3、一个可用来展示通过爬虫抓取网站数据后的区域

from tkinter import *

# 创建主窗口
root = Tk()
# 设置标题内容
root.title("PM-ip定位")
# 创建输入框并设置尺寸  
ip_input = Entry(root, width=40)
# 创建一个回显列表  
display_info = Listbox(root, width=60, height=10)
# 创建查询按钮
result_button = Button(root, text=" 查 询 ")

if __name__ == '__main__':
    # 完成布局  显示
    ip_input.pack()
    display_info.pack()
    result_button.pack()
    # 循环
    root.mainloop()

运行之后是一个非常简单的界面;关于里面的一些属性应用 ,也都是非常简单的,这里就不过多描述了

我这里有跟本章节配套的视频,如果有需要的可以联系我!
image.png

接下来,我们通过爬虫抓取数据并跟上述界面融合在一起;

第一步:获取数据

如果大家觉得阅读有困难,包括headers我是一键生成的;可以参考我前2篇文章,有很详细的介绍,这里就一概而过了。

import requests

# 查询函数, 接收用户输入的ip地址
def get_find_position():
    # 伪装
    headers = {
        'Connection': 'keep-alive',
        'Cache-Control': 'max-age=0',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
        'Referer': 'https://www.ipip.net/ip.html',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.9',
    }
    # 发送请求并获取返回数据
    response = requests.get('https://www.ipip.net/ip/175.0.59.43.html', headers=headers).text
    
    print(response)
    

第二步: 运用re正则表达式 ;解析数据内容

正则表达式是非常灵活的一种解析方式,这里运用了简单粗暴的通配符方案(.*?) 。

import re

# 正则表达式
address = re.search(r'地理位置.*?;">(.*?)</span>', response, re.S)
operator = re.search(r'运营商.*?;">(.*?)</span>', response, re.S)
time = re.search(r'时区.*?;">(.*?)</span>', response, re.S)
wrap = re.search(r'地区中心经纬度.*?;">(.*?)</span>', response, re.S)

第三步:将解析内容在界面中进行展示

这里运用了回传,将解析的内容回传至窗口列表中进行展示。

# 判断是否匹配成功
if address:
    # 匹配成功则一定有ip和地理位置信息
    ip_info_list = ['地理位置:   ' + address.group(1), '当前IP:   ' + ip]
    # 分别判断其他信息匹配结果, 成功则加入临时列表
    if operator:
        ip_info_list.insert(0, '所有者/运营商:   ' + operator.group(1))
    if time:
        ip_info_list.insert(0, '时区:   ' + time.group(1))
    if wrap:
        ip_info_list.insert(0, '地区中心经纬度:   ' + wrap.group(1))
        
    # 清空之前的回显列表
    display_info.delete(0, 5)
else:
    display_info.insert(0, "无效的ip!")

在图形界面中Button组件有一个属性为command,这个属性可以绑定一个事件,当我们点击这个组件的时候,会执行绑定的事件,而这个是事件就是我们的爬虫。

result_button = Button(root, command=get_find_position, text=" 查 询 ")

image.png

image.png

在这个浮躁的时代;竟然还有人能坚持篇篇原创;

如果本文对你学习有所帮助-可以点赞👍+ 关注!将持续更新更多新的文章。

支持原创。感谢!

相关文章
|
2月前
|
Python
下载python所有的包 国内地址
下载python所有的包 国内地址
|
1月前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
156 66
|
18天前
|
网络协议 Python
IP地址探秘:识别与解析的Python之旅 🚀
《IP地址探秘:识别与解析的Python之旅》通过Python的`ipaddress`模块,轻松实现IP地址的分类(如单播、多播、私有、环回或公有)及子网内所有IP的生成,使网络管理更加便捷高效。示例代码直观展示了功能实现过程。
11 1
|
23天前
|
数据采集 JavaScript 前端开发
JavaScript逆向爬虫——使用Python模拟执行JavaScript
JavaScript逆向爬虫——使用Python模拟执行JavaScript
22 2
|
25天前
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片
18 1
|
25天前
|
存储 自然语言处理 API
基于 Python 的地址解析:自动识别姓名、电话、地址、详细地址与省市区
基于 Python 的地址解析:自动识别姓名、电话、地址、详细地址与省市区
78 1
|
26天前
|
网络安全 Python
Python编程--目标IP地址段主机指定端口状态扫描
Python编程--目标IP地址段主机指定端口状态扫描
40 1
|
1月前
|
安全 Python
Python脚本实现IP按段分类
【10月更文挑战第04天】
24 7
|
2月前
|
数据采集 中间件 定位技术
新手爬虫er必刷!如何使用代理IP全攻略!
在爬虫开发中,代理IP是规避IP封锁和请求频率限制的重要工具,通过分散请求压力并模拟不同地理位置,提高数据抓取稳定性和成功率。本文详细介绍了代理IP的基本概念、选择服务的关键因素、获取及使用方法,包括Python中的Requests库和Scrapy框架的具体应用,以及IP管理与轮换策略,帮助新手掌握代理IP的使用技巧。
|
2月前
|
网络协议 网络安全 开发者
Python 向IP地址发送字符串
Python 向IP地址发送字符串
35 2