日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 通过ip获取城市_python中通过客户端IP拿到所在城市和当地天气信息—附带项目案例...

發(fā)布時間:2025/3/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 通过ip获取城市_python中通过客户端IP拿到所在城市和当地天气信息—附带项目案例... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先,需求分析:

1、拿到客戶端IP

2、通過IP拿到客戶端所在地區(qū)

3、通過地區(qū)拿到當(dāng)?shù)靥鞖?/p>

4、整合功能,展示給用戶

第一步,如何拿到用戶IP

我們以Django環(huán)境為例

# 客戶端的請求,IP信息會在請求頭中

request.META['REMOTE_ADDR']

# 或

request.META.get('HTTP_X_FORWARDED_FOR')

里面

為什么是或呢?

這是因?yàn)橛行┓?wù)器做了代理或者使用nginx等,在REMOTE_ADDR中會拿到本地回環(huán)地址:127.0.0.1

這時候真實(shí)的客戶端IP在HTTP_X_FORWARDER_FOR中。

如果你是測試環(huán)境,項(xiàng)目跑在內(nèi)網(wǎng),又想拿到本地公網(wǎng)IP做測試,那怎么做呢?誒,這里也有辦法

import re,requests

url = 'http://txt.go.sohu.com/ip/soip'

response = requests.get(url)

text = response.text

ip = re.findall(r'\d+.\d+.\d+.\d+', text)[0]

print("默認(rèn)訪客ip:%s"%ip)

通過requests模塊和re模塊向這個網(wǎng)址發(fā)送請求和解析匹配,你就可以拿到你的公網(wǎng)IP

第二步、找到對應(yīng)城市

好了,IP解決了,那么接下來就是通過IP解析所在城市

python中有一個第三方庫,專門來干這件事請,解析國家、城市、地區(qū)等等

它就是 geoip2 模塊,它依賴服務(wù)供應(yīng)商的數(shù)據(jù)庫文件,這里我用city數(shù)據(jù)庫來實(shí)現(xiàn)

據(jù)說這兩種都可以解壓出城市的數(shù)據(jù)庫文件,我這里已城市的為例

下載解壓后

這就是我們需要的數(shù)據(jù)庫文件

我們把它放到項(xiàng)目中的一個文件夾中,在settings中配置好它的路徑,這樣我們就可使用它了

使用也是十分簡單

read = geoip2.database.Reader(settings.CITY_DB) # mmdb文件路徑,提前在settings文件中配置好

c = read.city(ip) # 放入需要檢測的IP

target_city = c.city.names.get("ja")

這樣我們就拿到IP對應(yīng)的城市信息了 target_city

有興趣你可以打印下c、c.city、c.city.name 各自是什么東西

在這里由于這是人家給你免費(fèi)用的版本,比起商業(yè)付費(fèi)版本,在精確度和覆蓋面上會有差別,不過平常用用足夠了

第三步、爬取當(dāng)?shù)靥鞖庑畔?/p>

用于爬取天氣信息的網(wǎng)站比較多,百度一下都可以找到

現(xiàn)在我們以其中一個為例:

path = 'http://wthrcdn.etouch.cn/weather_mini?city=上海'

response = requests.get(path) # 對該地址和參數(shù)進(jìn)行g(shù)et請求

result = response.json() # 將返回的結(jié)果轉(zhuǎn)成json串

我們拿到的result是一個大字典,如下:

a ={

'data':

{

'yesterday':

{

'date': '10日星期三', 'high': '高溫 28℃', 'fx': '東風(fēng)', 'low': '低溫 19℃', 'fl': '', 'type': '雷陣雨'

},

'city': '北京',

'forecast':

[{'date': '11日星期四', 'high': '高溫 30℃', 'fengli': '', 'low': '低溫 21℃', 'fengxiang': '東南風(fēng)', 'type': '多云'},

{'date': '12日星期五', 'high': '高溫 32℃', 'fengli': '', 'low': '低溫 22℃', 'fengxiang': '西南風(fēng)', 'type': '多云'},

{'date': '13日星期六', 'high': '高溫 33℃', 'fengli': '', 'low': '低溫 23℃', 'fengxiang': '北風(fēng)', 'type': '多云'},

{'date': '14日星期天', 'high': '高溫 33℃', 'fengli': '', 'low': '低溫 23℃', 'fengxiang': '北風(fēng)', 'type': '晴'},

{'date': '15日星期一', 'high': '高溫 35℃', 'fengli': '', 'low': '低溫 24℃', 'fengxiang': '東南風(fēng)', 'type': '晴'}

],

'ganmao': '各項(xiàng)氣象條件適宜,發(fā)生感冒機(jī)率較低。但請避免長期處于空調(diào)房間中,以防感冒。', 'wendu': '29'

},

'status': 1000,

'desc': 'OK'

}

這么一看是不是非常爽呢,這不就是字典呢,你想干嘛干嘛了

第四步、渲染到項(xiàng)目中

這里以我寫的一個小項(xiàng)目為例

# 第一步拿到客戶端IP

if request.META['REMOTE_ADDR'] != '127.0.0.1': # if拿到IP

ip = request.META['REMOTE_ADDR']

print("REMOTE_ADDR 訪客ip:%s" % ip)

elif request.META.get('HTTP_X_FORWARDED_FOR'):

ip = request.META['HTTP_X_FORWARDED_FOR']

print("HTTP_X_FORWARDED_FOR訪客ip:%s" % ip)

else: #如果沒有符合的IP,默認(rèn)本地

path = 'http://txt.go.sohu.com/ip/soip'

response = requests.get(path)

text = response.text

ip = re.findall(r'\d+.\d+.\d+.\d+', text)[0]

print("默認(rèn)訪客ip:%s"%ip)

# 第二步、拿到IP對應(yīng)城市

read = geoip2.database.Reader(settings.CITY_DB) # mmdb文件路徑

c = read.city(ip)

target_city = c.city.names.get("ja") # 拿到城市,可能存在匹配不到

if not target_city:

target_city = '上海'

# 第三步、爬取當(dāng)?shù)靥鞖?/p>

path = 'http://wthrcdn.etouch.cn/weather_mini?city=%s' % target_city

# url = path % location

response = requests.get(path) # 對該地址和參數(shù)進(jìn)行g(shù)et請求

result = response.json() # 將返回的結(jié)果轉(zhuǎn)成json串

if result.get("status") != 1000:

wea = ''

else:

wea = result.get('data').get("forecast")[0].get("type")

# ganmao = result.get("ganmao")

print(target_city,wea)

前端展示:

好了,這篇就到這里了,更多好玩的功能,歡迎留言~

總結(jié)

以上是生活随笔為你收集整理的python 通过ip获取城市_python中通过客户端IP拿到所在城市和当地天气信息—附带项目案例...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本三级韩国三级三级a级按摩 | 国产精品自拍视频 | 国产精品一二三级 | 亚洲九九热 | 中文国产在线观看 | 日本性爱视频在线观看 | 亚洲免费精品视频在线观看 | 无码成人一区二区 | 国语毛片 | 日本男女啪啪 | 久久伊人一区二区 | 日韩在线播放视频 | 蜜桃av噜噜一区二区三区小说 | 极品美女高潮出白浆 | 天天爽天天插 | 第一福利av| m3u8成人免费视频 | 中国女人内精69xxxxxx | 成年人拍拍视频 | 日韩欧美卡一卡二 | 日韩视频 中文字幕 | 亚洲色图五月天 | 国产在线观看av | 国产小视频自拍 | 欧美极品jizzhd欧美仙踪林 | 亚洲av无码乱码国产麻豆 | 99视频国产精品免费观看a | 亚洲欧美自拍另类 | 猛1被调教成公厕尿便失禁网站 | 美日韩在线 | 性欧美一级 | 动漫美女被到爽 | 国内少妇毛片视频 | 麻豆传媒网址 | 亚欧洲精品在线视频免费观看 | 驯服少爷漫画免费观看下拉式漫画 | 在线观看国产区 | 国产精品网站免费 | 亚洲福利一区 | 美日韩一二三区 | 污片网站| 国产日韩欧美精品一区 | 一级黄色在线 | 欧美大肥婆大肥bbbbb | 亚洲第一网站 | 无码一区二区三区免费 | 都市激情自拍偷拍 | 亚洲精品白浆 | 中文字幕+乱码+中文字幕一区 | 夜夜草网站 | 曰本毛片| 色xxxxxx| 91久久国产综合久久 | 亚洲精品爱爱 | 国产大学生自拍视频 | 成年人黄网站 | 国产伦精品一区二区三区视频免费 | 草莓视频18免费观看 | 亚洲AV乱码国产精品观看麻豆 | 亚洲自拍电影 | 99热这里只有精品首页 | 日本久久99 | 四虎午夜 | 亚洲精品九九 | 精品国产乱码久久久久久预案 | 久操超碰 | 国产网红无码精品视频 | 波多野结衣99 | 毛片大全免费看 | 鲁在线视频 | 国产一级片a | 网址av| 成人短视频在线观看 | 国产黑丝av | 日韩色一区 | 久草网视频 | 九一精品视频 | 国产超碰av| 中文字幕精品久久久 | 国产在线xxx | 一级黄色特级片 | 免费在线成人网 | 奇米97| 亚洲av无码成人精品国产 | 国产激情视频一区 | 99ri国产| 日韩欧美精品中文字幕 | 久久中文字幕精品 | 国产白丝袜美女久久久久 | 欧洲av一区 | 亚洲欧美日韩综合在线 | 亚洲熟妇无码另类久久久 | 中文字幕av在线 | 越南少妇做受xxx片 亚洲av综合色区无码一二三区 | 色综合天天综合网天天看片 | 日韩免费av片 | 美女脱光内衣内裤 | 看国产黄色片 | 在线观看福利视频 |