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

Python爬取IP归属地信息及各个地区天气信息

一、实现样式

ip查询
weather

二、核心点

1、语言:Python、HTML,CSS
2、python web框架 Flask
3、三方库:requests、xpath
4、爬取网站:https://ip138.com/
5、文档结构
目录

三、代码

ipquery.py

import requests
from lxml import etree
# 请求user-agent
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}def getIpInfo(ip):ipurl = f"https://ip138.com/iplookup.php?ip={ip}&action=2"res = requests.get(ipurl,headers = headers)e = etree.HTML(res.text)ip = e.xpath("//div[@class='caption']//h1//text()")ipinfo = e.xpath("//div[@class='table-box']//tbody//tr//td[2]//text()")ipinfo.append(ip[0])return ipinfo

searchWeather.py

import requests
from lxml import etree,html
import re# 请求user-agent
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}
def getWeather(location):weatherUrl = f"https://www.wentian123.com/search/?location={location}"res = requests.get(weatherUrl,headers = headers)e = etree.HTML(res.text)weather = e.xpath("//table//tbody//td//text()")#处理数据# 去除'\n'weathernew = [x.strip() for x in weather]# 去掉空字符串''while ''  in weathernew:weathernew.remove('')# print(weathernew)# 数据分组 6个一组weatherInfo = [weathernew[i:i+6] for i in range(0,len(weathernew),6)]return weatherInfo

query.py

from flask import Flask,render_template,requestfrom ipquery.ipquery import getIpInfo
from searchWeather.seachWeather import getWeather
app = Flask(__name__)# 主页
@app.route('/')
def index():return render_template('index.html',weather = [],ipinfo = [])# ip地址查询
@app.route('/ipquery')
def ipquery():ip = request.args.get('ip')ipinfo = getIpInfo(ip)# print(ipinfo[1])return render_template('index.html',ipinfo = ipinfo,weather = [])# 天气查询
@app.route('/weather')
def getweather():location = request.args.get('location')# print(location)weather = getWeather(location)# print(weather)return render_template('index.html',weather = weather,ipinfo = [])if __name__ == '__main__':app.run(port=5000, debug=True)

index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!-- 最新版本的 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous"><title>查询网站</title>
</head>
<style>* {margin: 0 auto;padding: 0 auto;/* display: flex; */}.public {box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);margin: 0 auto;width: fit-content;padding: 40px 60px;text-align: center;margin-top: 20px;}
</style><body style="margin: 0 auto;"><!-- ip查询 --><div><div class="public"><h3>IP归属地查询</h3></h3></h3><form class="form-inline" action="/ipquery"><div class="form-group"><label for="exampleInputEmail2">IP地址</label><input type="text" class="form-control" name="ip" placeholder="请输入需要查询的IP地址" style="width: 300px;"></div><button type="submit" class="btn btn-primary">查询</button></form><table class="table table-bordered" style="width: 100%;margin-top: 20px;"><tr><th style="text-align: center;">IP地址</th><th style="text-align: center;">ASN归属地</th><th style="text-align: center;">运营商</th></tr>{% if ipinfo != [] %}<tr><td>{{ipinfo[-1]}}</td><td>{{ipinfo[0]}}</td><td>{{ipinfo[1]}}</td></tr>{% endif %}</table></div><!-- 天气查询 --><div class="public"><form class="form-inline" action="/weather"><div class="form-group"><input type="text" class="form-control" name="location" placeholder="请输入市区县名称、区号或者邮政" style="width: 300px;"></div><button type="submit" class="btn btn-primary">查询</button></form><table class="table table-bordered table-striped table-hover" style="width: 100%;margin-top: 20px;">{% if weather != [] %}<tbody>{% for i in weather %}<tr><td colspan="4" style="font-size: 16px;">{{i[0]}}</td></tr><tr><td>{{i[1]}}{{i[2]}}</td><!-- <td>{{i[2]}}</td> --><td>{{i[3]}}</td><td>{{i[4]}}</td><td>{{i[5]}}</td></tr>{% endfor %}</tbody>{% endif %}</div></div>
</body>
</html>

四、总结

初学python,很多代码写的很冗余,不够简洁,还有一些逻辑没有处理好,感谢贵网站 信息查询网站 提供的接口数据,里面还有很多类型的查询,这边就简单写了两个查询方法的爬虫,继续加油!!!

相关文章:

Python爬取IP归属地信息及各个地区天气信息

一、实现样式 二、核心点 1、语言&#xff1a;Python、HTML&#xff0c;CSS 2、python web框架 Flask 3、三方库&#xff1a;requests、xpath 4、爬取网站&#xff1a;https://ip138.com/ 5、文档结构 三、代码 ipquery.py import requests from lxml import etree # 请求…...

RedLock + Redisson

目录 2.9 RedLock2.9.1 上述实现的分布式锁在集群状态下失效的原因2.9.2 解决方式-RedLock 2.10 redisson中的分布式锁2.10.0 redisson简介以及简单使用简单使用redisson中的锁Redisson常用配置 2.10.1 Redisson可重入锁实现原理2.10.2 公平锁&#xff08;Fair Lock&#xff09…...

计算机视觉:卷积层的参数量是多少?

本文重点 卷积核的参数量是卷积神经网络中一个重要的概念,它决定了网络的复杂度和计算量。在深度学习中,卷积操作是一种常用的操作,用于提取图像、语音等数据中的特征。卷积神经网络的优势点在于稀疏连接和权值共享,这使得卷积核的参数相较于传统的神经网络要少很多。 举例…...

Docker 容器基础操作

Docker容器基础操作 容器(container)是Docker镜像的运行实例,类似于可执行文件与进程的关系,Docker是容器引擎,相当于系统平台。 容器的生命周期 容器的基础操作(以 tomcat8.0 为例) # 拉取tomcat8.0镜像 [root@tudou tudou]# docker pull tomcat:8.0 8.0: Pulling f…...

【Vue3+Ts+Vite】配置滚动条样式

一、先看效果 二、直接上代码 <template><div class"main-container"><h1 v-for"index in 50" :key"index">这是home页面</h1></div> </template> <style lang"scss" scoped> .main-conta…...

react map使用方法详解

在React中&#xff0c;map()方法是用于数组的常见方法之一&#xff0c;它可以用于处理数组并返回一个新的数组。在React中&#xff0c;经常使用map()方法来遍历数组&#xff0c;生成对应的组件列表或进行数据转换操作。 下面是map()方法在React中的使用方法详解&#xff1a; …...

PoseiSwap:通过 RWA 的全新叙事,反哺 Nautilus Chain 生态

PoseiSwap 是 Nautilus Chain 上的首个 DEX&#xff0c;作为目前行业内模块化区块链叙事的早期奉行者&#xff0c;PoseiSwap 也得到了较高的市场关注。基于 Nautilus Chain&#xff0c;PoseiSwap 打造了一个全新的 Rollup 应用层&#xff0c;并通过零知识证明来建立全新的订单簿…...

PHP8的常量-PHP8知识详解

常量和变量是构成PHP程序的基础&#xff0c;在PHP8中常量的这一节中&#xff0c;主要讲到了定义常量和预定义常量两大知识点。 一、定义常量 定义常量也叫声明常量。在PHP8中&#xff0c;常量就是一个标识符&#xff08;名字&#xff09;&#xff0c;一旦定义&#xff08;声明&…...

印花税的本质和底层逻辑是什么?印花税降低是利好股市吗?

内容由LLM协助生成&#xff1a; 印花税是一种对特定交易或证券交易征收的税费&#xff0c;由政府机构收取。其本质和底层逻辑可以归结为以下几点&#xff1a; 资金来源&#xff1a;印花税是国家财政收入的一部分&#xff0c;用于满足政府的财政需求和公共支出。政府通过征收印花…...

pytorch+GPU跑模型时 nvrtc: error: failed to open nvrtc-builtins64_117.dll

1.先检查自己cuda版本&#xff1a; print(torch.version.cuda) #查看cuda版本 print(torch.cuda.is_available()) # 查看cuda是否可用 print(torch.cuda.device_count()) # 查看可行的cuda数目如果版本高于11建议先降版本&#xff0c;然后再试下。 2.重新安装nvrtc-builtin…...

SQL-每日一题【626.换座位】

题目 表: Seat 编写SQL查询来交换每两个连续的学生的座位号。如果学生的数量是奇数&#xff0c;则最后一个学生的id不交换。 按 id 升序 返回结果表。 查询结果格式如下所示。 示例 1: 解题思路 前置知识 MySQL 的 MOD() 函数是取模运算的函数&#xff0c;它返回两个数相除…...

Swagger之Hello World !

目录 ■1&#xff0e;前言・Swagger介绍 ■2&#xff0e;例子&#xff0c;如果基于Spring Boot项目&#xff0c;实现Swagger---非常简单 2&#xff0e;1&#xff0e;已有的SpringBoot项目 2&#xff0e;2&#xff0e;修改POM文件 2&#xff0e;3&#xff0e;添加Config文件…...

VSCode SSH远程连接与删除

1.ubuntu设置 安装SSH服务并获取远程访问的IP地址 在Ubuntu系统中&#xff0c;“CtrlAltT”打开终端工具&#xff0c;执行如下命令安装SSH服务。 sudo apt-get install openssh-server如果安装失败则先安装依赖项。 2.VS Code 设置 2.1安装与设置Remote SSH 打开Windows系…...

面试典中典之线程池的七大参数

文章目录 一、七大元素解释1.corePoolSize&#xff08;核心线程数&#xff09;&#xff1a;2.maximumPoolSize&#xff08;最大线程数&#xff09;&#xff1a;3.keepAliveTime&#xff08;线程空闲时间&#xff09;&#xff1a;4.unit&#xff08;时间单位&#xff09;&#x…...

Maven如何创建Java web项目(纯干货版)!!!

1.创建Maven项目。 2.创建完成后会来到这个界面。 3.在src/main目录下&#xff0c;建立webapp / WEB-INF/web.xml文件&#xff0c;并在web.xml文件中写入以下内容&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http…...

linux进程间通信的方式及特点

1&#xff1a;信号 描述&#xff1a; 信号是linux上的一种软中断通信机制&#xff0c;可以向指定进程发送通知&#xff0c;总共有64种信号&#xff1b; 特点&#xff1a; 信号只能作为通知使用&#xff0c;没办法传递数据&#xff1b; 2&#xff1a;socket套接字 描述&#…...

京东的成功秘诀:找到自己独特而有效的商业模式

你知道京东为什么能够从一个卖电器的小网站发展成为中国最大的电商平台吗&#xff1f;如果京东一开始靠卖电器赚钱&#xff0c;不可能有今天&#xff0c;在十几年刘强东刚创业的时候&#xff0c;如果京东靠卖电器赚钱&#xff0c;你知道想当年的国美黄光裕和想当年的苏宁的张近…...

全局ip代理安全吗? 手机设置全局代理方法详解

全局IP代理并不一定是安全的&#xff0c;因为全局IP代理会将所有网络流量都通过代理服务器进行转发&#xff0c;包括敏感信息和隐私数据。如果代理服务器受到黑客攻击或存在安全漏洞&#xff0c;可能会导致数据泄露和其他安全问题。因此&#xff0c;在使用全局IP代理时&#xf…...

Clion开发Stm32之温湿度传感器(DHT11)驱动编写

前言 涵盖之前文章: Clion开发STM32之HAL库GPIO宏定义封装(最新版)Clion开发stm32之微妙延迟(采用nop指令实现)Clion开发STM32之日志模块(参考RT-Thread) DHT11驱动文件 头文件 /*******************************************************************************Copyrig…...

位操作相关的函数(C++)

目录 popcount函数 bitset类模板 __builtin_popcount函数 popcount函数 在C中&#xff0c;std::popcount函数是用来计算一个整数二进制表示中包含的1的个数。不过要注意&#xff0c;这个函数是C20标准引入的&#xff0c;因此在使用之前&#xff0c;要先确保编译器支持C20标…...

谷歌 Gemma 4 部署指南

谷歌 Gemma 4 部署指南 Gemma 4 是 Google DeepMind 于 2026 年 4 月 2 日发布的最新开放权重模型系列,采用 Apache 2.0 许可协议,支持商业用途。该系列模型提供 E2B、E4B、26B A4B(MoE 架构)及 31B(密集架构)四种变体,适用于从移动设备、边缘计算到服务器和工作站的广…...

Qwen2.5-VL-7B-Instruct环境部署:torch29环境兼容性验证与降级策略

Qwen2.5-VL-7B-Instruct环境部署&#xff1a;torch29环境兼容性验证与降级策略 1. 项目概述与准备工作 Qwen2.5-VL-7B-Instruct是一款强大的多模态视觉-语言模型&#xff0c;能够同时处理图像和文本输入&#xff0c;生成高质量的响应。在部署过程中&#xff0c;我们发现torch…...

OpenClaw学术助手:千问3.5-27B自动校对论文格式与参考文献

OpenClaw学术助手&#xff1a;千问3.5-27B自动校对论文格式与参考文献 1. 为什么需要自动化论文校对工具 作为科研工作者&#xff0c;我经历过无数次论文投稿前的格式调整噩梦。记得去年投稿某核心期刊时&#xff0c;光是调整参考文献格式就花了整整两天——期刊要求APA第六版…...

像素剧本圣殿步骤详解:如何导出带角色关系图谱的交互式剧本HTML文档

像素剧本圣殿步骤详解&#xff1a;如何导出带角色关系图谱的交互式剧本HTML文档 1. 工具介绍与环境准备 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是基于Qwen2.5-14B-Instruct深度微调的专业剧本创作工具。它不仅具备强大的剧本生成能力&#xff0c;还能将创…...

霜儿-汉服-造相Z-Turbo科研辅助:使用LaTeX撰写包含AI生成图像的学术论文

霜儿-汉服-造相Z-Turbo科研辅助&#xff1a;使用LaTeX撰写包含AI生成图像的学术论文 最近在帮一位研究传统服饰的朋友整理论文&#xff0c;遇到了一个挺有意思的问题。他们需要大量汉服的结构示意图和纹样分析图&#xff0c;但手绘耗时&#xff0c;找现成资料又很难完全匹配研…...

从光纤通信到超快光学:非线性薛定谔方程仿真在工程研究中的5个典型应用场景

从光纤通信到超快光学&#xff1a;非线性薛定谔方程仿真在工程研究中的5个典型应用场景 当一束激光脉冲在光纤中传输时&#xff0c;其强度分布会随时间发生微妙变化——这种看似简单的物理现象背后&#xff0c;隐藏着非线性光学中最富魅力的数学描述&#xff1a;非线性薛定谔方…...

如何在5分钟内快速安装Homebridge Config UI X

如何在5分钟内快速安装Homebridge Config UI X 【免费下载链接】homebridge-config-ui-x The Homebridge UI. Monitor, configure and backup Homebridge from a browser. 项目地址: https://gitcode.com/gh_mirrors/ho/homebridge-config-ui-x Homebridge Config UI X …...

Nunchaku FLUX.1-dev部署教程:Linux系统下CUDA驱动与PyTorch匹配指南

Nunchaku FLUX.1-dev部署教程&#xff1a;Linux系统下CUDA驱动与PyTorch匹配指南 想用最新的Nunchaku FLUX.1-dev模型生成惊艳的AI图片&#xff0c;结果卡在了环境配置上&#xff1f;别担心&#xff0c;这篇教程就是为你准备的。很多朋友在部署时遇到的最大障碍&#xff0c;往…...

Windows Defender一键移除工具:终极完整指南,三步彻底关闭系统安全防护

Windows Defender一键移除工具&#xff1a;终极完整指南&#xff0c;三步彻底关闭系统安全防护 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https:/…...

电动关节机械手设计【任务书+说明书+CAD图纸】 电动关节机器人

电动关节机械手作为工业自动化领域的核心装备&#xff0c;通过电机驱动实现多自由度运动控制&#xff0c;在物料搬运、装配加工等场景中承担关键操作任务。其核心作用在于替代人工完成重复性高、精度要求严苛的作业&#xff0c;例如精密电子元件的抓取、重型工件的定位等&#…...