<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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 = {"ASN1éê?μ?":"?\\xad??ê?????êD  μ?D? ", "iP??":"180.97.107.0 - 180.97.135.255", "??èYIPv6μ??·":"::B461:7DE4", "ó3é?IPv6μ??·":"::FFFF:B461:7DE4", "ip_c_list":[{"begin":3026283264, "end":3026290687, "ct":"?D1ú", "prov":"?\\xad??ê?", "city":"????êD", "area":"", "idc":"", "yunyin":"μ?D?", "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

    文章

    69

    瀏覽量

    18890
  • 地址
    +關注

    關注

    1

    文章

    31

    瀏覽量

    10624
  • 文本
    +關注

    關注

    0

    文章

    118

    瀏覽量

    16925
收藏 人收藏

    評論

    相關推薦

    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

    請問AD9850怎么用c語言進行正弦波表地址查詢?

    您好!理論:AD9850中相位寄存器的輸出與頻率控制字相加輸入到正弦波表地址查詢,實踐:那我怎么用c語言進行AD9850正弦波表查詢呢?
    發表于 09-17 15:31

    請問SIM5320如何用AT指令查詢SERVER自身IP地址?

    想要用兩個SIM5320模塊之間點對點互傳數據,現在已經實現把其中一個配置為Server,另一個配置為Client,但是不知道如何查詢Server的IP地址,還望高人指點!附手冊上配置SERVER的指令如下:(里面缺少查詢IP的
    發表于 08-26 08:01

    網線連接控制器的ip地址查詢

    pc和一款控制器通過網線連接,arp-a命令查詢不到局域網內有控制器的ip,請問有沒有什么方法可以查詢到控制器的ip地址?
    發表于 06-18 10:53

    RISC-V MCU開發 (七):代碼調試

    窗口可以顯示所有設置的斷點位置,可以在此處使能或者刪除段斷點。 【內存窗口】Memory窗口可以用來查詢不同地址的值,例如我們查詢0x2000000,點擊該窗口下綠色加號 ,在彈出的窗口輸入要
    發表于 10-09 11:03

    有沒有A40i的數據手冊能夠查詢端口號的地址

    請問一下,有沒有A40i的數據手冊,能夠查詢端口號的地址?謝謝
    發表于 01-14 08:38

    如何查詢uboot下載執行地址?

    的 Uboot 映像:fip.bin、fip.s32請問:有什么我沒有用這種方式設置的嗎?問題二、查詢uboot下載執行地址查看Uboot的下載和執行地址可參考7.3下載S32G中的Uboot鏡像_燒錄工具
    發表于 03-24 07:46

    Modbus從設備如何回應主機的消息及VB的小問題?

    Modbus從設備如何回應主機的消息?就是如何主機發往從設備要求查詢地址4001地址的數據,從設備如何獲得那個數據呢? 用RTU模式傳輸,用VB的話如何控制3.5和1.5字符的間隔? 是個新手,請盡量說的詳細點,拜托各位大蝦了~
    發表于 05-05 16:10

    請問如何通過串口查詢SE5的IP地址?

    如何通過串口查詢SE5的IP地址?
    發表于 09-18 06:06

    總線進入查詢_查詢工具

    總線進入查詢,很好的查詢工具,快來下載學習吧
    發表于 03-29 10:27 ?62次下載

    dns地址如何查詢

    DNS(Domain Name Server,域名服務器)是進行域名(domain name)和與之相對應的IP地址 (IP address)轉換的服務器。DNS中保存了一張域名(domain name)和與之相對應的IP地址 (IP address)的表,以解析消息的域
    發表于 01-15 16:09 ?1136次閱讀

    如何利用地址查詢比特幣交易

    由于比特幣的數據存儲結構,不可能直接利用比特幣的原始API來查詢指定地址的歷史交易數據。
    發表于 07-26 17:00 ?6282次閱讀

    無線AP的特點_無線ap的地址怎么查看

    本文主要闡述了無線AP的特點及查詢無線ap地址的方法。
    發表于 04-15 11:21 ?9300次閱讀

    植入芯片發力 深圳犬只未植入芯片將被視為無證養犬

    26日,深圳市城市管理和綜合執法局公布了全市首批100家犬只芯片免費注射點,市民可在美麗深圳微信公眾號上查詢地址。2020年年底前,深圳將實現犬只芯片管理全覆蓋。(據《深圳市犬只電子標簽植入管理規定
    的頭像 發表于 07-27 17:10 ?2872次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>