0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何查询地址

汽车电子技术 ? 来源:Python脚本 ? 作者: idlepig ? 2023-03-03 14:54 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

In [1]:

import json
import re
import chardet
import requests

In [2]:

def get_text_from_html(url):
    """
    获取网页内容,匹配有地址的文本
    :param url: 获取地址的url
    :return: 返回包含地址的网页内容
    """
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
    }
    resp = requests.get(url, headers=headers)
    content = resp.text

    prefix_ip = 'var ip_result = '
    for row in re.split('\\r\\n\\t', content):
        if prefix_ip in row and row:
            return row

In [3]:

ip = '180.97.125.228'
url = 'https://www.ip138.com/iplookup.asp?ip=%s&action=1' % ip
row = get_text_from_html(url)
row

Out [3]:

'\\t\\tvar ip_result = {"ASN?é????":"?\\xad??????????  ???? ", "iP??":"180.97.107.0 - 180.97.135.255", "????IPv6???·":"::B461:7DE4", "????IPv6???·":"::FFFF:B461:7DE4", "ip_c_list":[{"begin":3026283264, "end":3026290687, "ct":"???ú", "prov":"?\\xad????", "city":"??????", "area":"", "idc":"", "yunyin":"????", "net":""}], "zg":1};'

In [4]:

# 这个网页文字的编码是unicode形式的gbk编码内容
# Unicode codepoints U+0000 to U+00FF和latin-1一一对应,编码后保留了等价的字节流数据。
row_byte = row.encode("latin-1")
row_byte

Out [4]:

b'\\t\\tvar ip_result = {"ASN\\xb9\\xe9\\xca\\xf4\\xb5\\xd8":"\\xbd\\xad\\xcb\\xd5\\xca\\xa1\\xc4\\xcf\\xbe\\xa9\\xca\\xd0  \\xb5\\xe7\\xd0\\xc5 ", "iP\\xb6\\xce":"180.97.107.0 - 180.97.135.255", "\\xbc\\xe6\\xc8\\xddIPv6\\xb5\\xd8\\xd6\\xb7":"::B461:7DE4", "\\xd3\\xb3\\xc9\\xe4IPv6\\xb5\\xd8\\xd6\\xb7":"::FFFF:B461:7DE4", "ip_c_list":[{"begin":3026283264, "end":3026290687, "ct":"\\xd6\\xd0\\xb9\\xfa", "prov":"\\xbd\\xad\\xcb\\xd5\\xca\\xa1", "city":"\\xc4\\xcf\\xbe\\xa9\\xca\\xd0", "area":"", "idc":"", "yunyin":"\\xb5\\xe7\\xd0\\xc5", "net":""}], "zg":1};'

In [5]:

# 通过字节码获取当前的编码为gb2312
encoding_detect = chardet.detect(row_byte)
encoding_detect

Out [5]:

{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}

In [6]:

# 因此对其进行解码即可还原最初的unicode字符。
row_target = row_byte.decode("gb2312")
row_target

Out [6]:

'\\t\\tvar ip_result = {"ASN归属地":"江苏省南京市  电信 ", "iP段":"180.97.107.0 - 180.97.135.255", "兼容IPv6地址":"::B461:7DE4", "映射IPv6地址":"::FFFF:B461:7DE4", "ip_c_list":[{"begin":3026283264, "end":3026290687, "ct":"中国", "prov":"江苏省", "city":"南京市", "area":"", "idc":"", "yunyin":"电信", "net":""}], "zg":1};'

In [7]:

# 截取文本,转化为规范的json字符串
json_str = row_target.strip().replace('var ip_result = ', '').replace(';', '')
json_str

Out [7]:

'{"ASN归属地":"江苏省南京市  电信 ", "iP段":"180.97.107.0 - 180.97.135.255", "兼容IPv6地址":"::B461:7DE4", "映射IPv6地址":"::FFFF:B461:7DE4", "ip_c_list":[{"begin":3026283264, "end":3026290687, "ct":"中国", "prov":"江苏省", "city":"南京市", "area":"", "idc":"", "yunyin":"电信", "net":""}], "zg":1}'

In [8]:

# 转化为python里面的数据格式:字典
location_dict = json.loads(json_str)
location_dict

Out [8]:

{'ASN归属地': '江苏省南京市  电信 ',
 'iP段': '180.97.107.0 - 180.97.135.255',
 '兼容IPv6地址': '::B461:7DE4',
 '映射IPv6地址': '::FFFF:B461:7DE4',
 'ip_c_list': [{'begin': 3026283264,
   'end': 3026290687,
   'ct': '中国',
   'prov': '江苏省',
   'city': '南京市',
   'area': '',
   'idc': '',
   'yunyin': '电信',
   'net': ''}],
 'zg': 1}

In [9]:

# 获取中文地址
location = location_dict.get('ASN归属地', '').strip()
location

Out [9]:

'江苏省南京市  电信'
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 网页
    +关注

    关注

    0

    文章

    74

    浏览量

    19668
  • 地址
    +关注

    关注

    1

    文章

    32

    浏览量

    11023
  • 文本
    +关注

    关注

    0

    文章

    119

    浏览量

    17487
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何利用python和API查询IP地址

    在Python中,直接查询IP地址的地理位置或详细信息(如所属国家、城市等)通常需要依赖外部API服务,因为Python标准库本身不提供直接查询IP地址地理位置的功能。以下是一个使用r
    发表于 08-28 11:55

    SIM5320如何用AT指令查询SERVER自身IP地址

    想要用两个SIM5320模块之间点对点互传数据,现在已经实现把其中一个配置为Server,另一个配置为Client,但是不知道如何查询Server的IP地址,还望高人指点! 附手册上配置SERVER的指令如下:(里面缺少查询IP
    发表于 04-03 21:43

    请问长短地址如何互相查询

    本帖最后由 一只耳朵怪 于 2018-5-24 11:07 编辑 如题,请问TI大牛:1. 知道短地址Node ID如何查询IEEE ID?2. 知道IEEE ID 如何查询地址
    发表于 05-22 08:44

    网线连接控制器的ip地址查询

    pc和一款控制器通过网线连接,arp-a命令查询不到局域网内有控制器的ip,请问有没有什么方法可以查询到控制器的ip地址
    发表于 06-18 10:53

    Modbus从设备如何回应主机的消息及VB的小问题?

    Modbus从设备如何回应主机的消息?就是如何主机发往从设备要求查询地址4001地址的数据,从设备如何获得那个数据呢? 用RTU模式传输,用VB的话如何控制3.5和1.5字符的间隔? 是个新手,请尽量说的详细点,拜托各位大虾了~
    发表于 05-05 16:10

    请问如何通过串口查询SE5的IP地址

    如何通过串口查询SE5的IP地址
    发表于 09-18 06:06

    dns地址如何查询

    DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域
    发表于 01-15 16:09 ?1601次阅读

    如何利用地址查询比特币交易

    由于比特币的数据存储结构,不可能直接利用比特币的原始API来查询指定地址的历史交易数据。
    发表于 07-26 17:00 ?7518次阅读

    植入芯片发力 深圳犬只未植入芯片将被视为无证养犬

    26日,深圳市城市管理和综合执法局公布了全市首批100家犬只芯片免费注射点,市民可在美丽深圳微信公众号上查询地址。2020年年底前,深圳将实现犬只芯片管理全覆盖。(据《深圳市犬只电子标签植入管理规定
    的头像 发表于 07-27 17:10 ?3277次阅读

    常见的IP地址查询技术

    1. 在线IP地址查询工具 ? 在线IP地址查询服务是获取IP地址信息的最用户友好方法。像IP数据云IP
    的头像 发表于 09-26 10:21 ?897次阅读
    常见的IP<b class='flag-5'>地址</b><b class='flag-5'>查询</b>技术

    根据ip地址查网页怎么查询

    一、通过命令提示符查询查网页(Windows系统) ①按“Win+R”键,打开运营窗口。 根据ip地址查网页怎么查询? ②输入“cmd”+“回车”,打开命令提示符窗口。 ③输入“nslookup
    的头像 发表于 09-29 10:56 ?2680次阅读
    根据ip<b class='flag-5'>地址</b>查网页怎么<b class='flag-5'>查询</b>?

    这些ipv6公网地址查询方法,一定要知道!

    ipv6公网地址查询可通过多种方法实现,包括使用命令行工具(如Windows的ipconfig、Linux和macOS的ifconfig或ipaddrshow),利用在线查询网站和浏览器插件,登录
    的头像 发表于 12-10 13:37 ?4922次阅读

    NAT技术为什么会对IP地址查询造成干扰

    对于企业来说,对IP地址进行查询https://www.ip66.net/?utm-source=WZJ&utm-keyword=?2835肯定是越细致越好,信息的维度要丰富精准,这样才有
    的头像 发表于 12-18 10:36 ?577次阅读
    NAT技术为什么会对IP<b class='flag-5'>地址</b><b class='flag-5'>查询</b>造成干扰

    为什么说行业监管离不开IP地址查询

    行业监管离不开IP地址查询,这一大背景是互联网发展迅速,互联网行为日益频繁复杂。 行业种类有很多,比如网络安全会利用IP地址查询来追踪和防范网络攻击、内容相关追踪、电商等等、现在很多a
    的头像 发表于 12-21 10:04 ?566次阅读

    IP地址查询技术

    IP查询****的价值 根据2023年国际互联网数据中心统计,全球每天产生的IP查询请求超过50亿次,这一数字就能够清晰的看出广大群众对于IP查询技术的需求以及它的价值。 而传统IP查询
    的头像 发表于 02-12 11:13 ?455次阅读
    IP<b class='flag-5'>地址</b><b class='flag-5'>查询</b>技术