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

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

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

支持原创。感谢!

相关文章
|
4天前
|
数据采集 中间件 定位技术
新手爬虫er必刷!如何使用代理IP全攻略!
在爬虫开发中,代理IP是规避IP封锁和请求频率限制的重要工具,通过分散请求压力并模拟不同地理位置,提高数据抓取稳定性和成功率。本文详细介绍了代理IP的基本概念、选择服务的关键因素、获取及使用方法,包括Python中的Requests库和Scrapy框架的具体应用,以及IP管理与轮换策略,帮助新手掌握代理IP的使用技巧。
|
7天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
33 3
|
7天前
|
数据采集 API 开发者
🚀告别网络爬虫小白!urllib与requests联手,Python网络请求实战全攻略
在网络的广阔世界里,Python凭借其简洁的语法和强大的库支持,成为开发网络爬虫的首选语言。本文将通过实战案例,带你探索urllib和requests两大神器的魅力。urllib作为Python内置库,虽API稍显繁琐,但有助于理解HTTP请求本质;requests则简化了请求流程,使开发者更专注于业务逻辑。从基本的网页内容抓取到处理Cookies与Session,我们将逐一剖析,助你从爬虫新手成长为高手。
25 1
|
16天前
|
数据采集 JavaScript 前端开发
构建你的首个Python网络爬虫
【9月更文挑战第8天】本文将引导你从零开始,一步步构建属于自己的Python网络爬虫。我们将通过实际的代码示例和详细的步骤解释,让你理解网络爬虫的工作原理,并学会如何使用Python编写简单的网络爬虫。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你打开网络数据获取的新世界。
|
16天前
|
数据采集 机器学习/深度学习 搜索推荐
Python爬虫技术基础与应用场景详解
本文介绍了爬虫技术的基本概念、原理及应用场景,包括数据收集、价格监测、竞品分析和搜索引擎优化等。通过一个实战案例展示了如何使用Python爬取电商网站的商品信息。强调了在使用爬虫技术时需遵守法律法规和道德规范,确保数据抓取的合法性和合规性。
|
19天前
|
数据采集 JavaScript 前端开发
打造你的Python爬虫:从基础到进阶
【9月更文挑战第5天】在数字信息泛滥的时代,掌握一项技能能让我们更好地筛选和利用这些资源。本文将带你了解如何用Python构建一个基本的网页爬虫,进而拓展到更复杂的数据抓取任务。无论你是编程新手还是有一定经验的开发者,跟随这篇文章的步伐,你将能够实现自动化获取网络数据的目标。准备好了吗?让我们一起潜入代码的世界,解锁新的可能!
WK
|
23天前
|
数据采集 XML 安全
常用的Python网络爬虫库有哪些?
Python网络爬虫库种类丰富,各具特色。`requests` 和 `urllib` 简化了 HTTP 请求,`urllib3` 提供了线程安全的连接池,`httplib2` 则具备全面的客户端接口。异步库 `aiohttp` 可大幅提升数据抓取效率。
WK
37 1
|
24天前
|
数据采集 JavaScript 前端开发
构建简易Python爬虫:抓取网页数据入门指南
【8月更文挑战第31天】在数字信息的时代,数据抓取成为获取网络资源的重要手段。本文将引导你通过Python编写一个简单的网页爬虫,从零基础到实现数据抓取的全过程。我们将一起探索如何利用Python的requests库进行网络请求,使用BeautifulSoup库解析HTML文档,并最终提取出有价值的数据。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你打开数据抓取的大门。
|
24天前
|
数据采集 存储 JavaScript
Python 爬虫实战:从入门到精通
【8月更文挑战第31天】 本文将带你走进 Python 爬虫的世界,从基础的请求和解析开始,逐步深入到反爬策略的应对和数据存储。我们将通过实际案例,一步步构建一个功能完整的爬虫项目。无论你是编程新手还是有一定经验的开发者,都能在这篇文章中找到适合自己的学习路径。让我们一起探索数据的海洋,揭开网络信息的神秘面纱。
|
1月前
|
数据采集 存储 中间件
Python进行网络爬虫:Scrapy框架的实践
【8月更文挑战第17天】网络爬虫是自动化程序,用于从互联网收集信息。Python凭借其丰富的库和框架成为构建爬虫的首选语言。Scrapy作为一款流行的开源框架,简化了爬虫开发过程。本文介绍如何使用Python和Scrapy构建简单爬虫:首先安装Scrapy,接着创建新项目并定义爬虫,指定起始URL和解析逻辑。运行爬虫可将数据保存为JSON文件或存储到数据库。此外,Scrapy支持高级功能如中间件定制、分布式爬取、动态页面渲染等。在实践中需遵循最佳规范,如尊重robots.txt协议、合理设置爬取速度等。通过本文,读者将掌握Scrapy基础并了解如何高效地进行网络数据采集。
135 6