获得本机公网IP(python)

  • 使用 www.ip138.com 作为解析对象
  • 自动解析ip138.com 中框架的地址
  • pyquery的用例
# pip install urllib
# pip install pyquery

import urllib
import urllib.parse
import urllib.request
from pyquery import PyQuery as pq


def get_ip():
    
    # 这里用iphone7 的头
    # 不增头信息,访问ip138.com失败

    # ip138.com中使用iframe,这里先获得iframe中的src
    # 每年iframe中的地址会变,比如 2019.ip138.com 2022.ip138.com
    headers = ("User-Agent",
               "Mozilla/5.0 (Linux;U;Android 2.3;en-us;Nexus One Build/FRF91)AppleWebKit/999+(KHTML, like Gecko)Version/4.0 Mobile Safari/999.9")
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    data = opener.open("http://ip138.com")
    doc = pq(data.read())
    
    # 获得 iframe 标签的 src 属性的值
    # 获得出来大概是这样 "//2022.ip138.com/"
    # 再去掉两头多余的 "/"  就获得到实际的显示地址了
    url = "http://" + doc('iframe').eq(0).attr('src').replace('/','')
    # print(url)
    opener.close()

    #获取ip地址
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    data = opener.open(url)
    doc = pq(data.read().decode('utf8'))

    # 取得素有的 <a> 元素
    lista = doc('body p a')

    # 取得第一个<a> 元素
    firsta = lista.eq(0).text()
    #print(firsta)
    return firsta

万网有一个地址,可以尝试去写个备用结果

http://www.net.cn/static/customercare/yourip.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值