如何查询地址

in [1]:
import jsonimport reimport chardetimport requestsin [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 rowin [3]:
ip = '180.97.125.228'url = 'https://www.ip138.com/iplookup.asp?ip=%s&action=1' % iprow = get_text_from_html(url)rowout [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_byteout [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]:
# 通过字节码获取当前的编码为gb2312encoding_detect = chardet.detect(row_byte)encoding_detectout [5]:
{'encoding': 'gb2312', 'confidence': 0.99, 'language': 'chinese'}in [6]:
# 因此对其进行解码即可还原最初的unicode字符。row_target = row_byte.decode(gb2312)row_targetout [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_strout [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_dictout [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()locationout [9]:
'江苏省南京市 电信'

浅析适用于车载应用位置检测的新变革
互联网+是怎样诞生的
智能化无纺布表面缺陷检测系统的原理及功能
Imagination的PowerVR GPU获芯驰科技选用并成功支持其高性能车规级芯片
韩国研究人员开发出了一款瓢虫机器人
如何查询地址
用于新型电力电子设备的垂直GaN器件
华为mate10确定10月16日发布!外观基本确定,与iPhoneX对抗的重量级产品
尼康1系列无反相机走向终结:或将是为全画幅无反相机做准备
印制板铜皮走线的注意事项
RX65N和RX651系列主要特性分析(原理图)
元宇宙怎么赚钱_元宇宙盈利模式
关于电瓶加水后的‘奇怪现象’,一探究竟
Silicon Labs推出超低功耗SiWx917的Wi-Fi6解决方案
泰克P7700探头对高速信号的精确测量
新能源汽车产业加速布局,锂电池发展该何去何从
力科推出仿真设计验证工具
射频开关设计和选择合适的开关
常用的振荡器类型有哪些,微控制器应用中如何选择
TMS320C6211 DSK及其在短波软件无线电侦察中的应