前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用百度搜索获取 IP 地址的归属地(已经失效)

用百度搜索获取 IP 地址的归属地(已经失效)

作者头像
卓越笔记
发布2023-02-18 10:37:41
4670
发布2023-02-18 10:37:41
举报
文章被收录于专栏:卓越笔记

思路:把 IP 地址当关键词拼上百度的搜索链接,然后用正则匹配想要的信息。

代码:

代码语言:javascript
复制
import re
import requests

requests.packages.urllib3.disable_warnings()


def get_ipv4(ip):
    """
    获取 IPv4
    :param ip:
    :return:
    """
    # IP patterns
    ipv4_re = r'(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}'
    # ipv6_re = r'\[[0-9a-f:\.]+\]'  # (simple regex, validated later)
    ipv4 = re.search(ipv4_re, ip)
    if ipv4:
        return ipv4.group()
    return ip


def ip_location_baidu(ip):
    """
    从 百度搜索 获取 IP 的 归属地
    :param ip:
    :return:
    """
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) \
        Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4549.400 QQBrowser/9.7.12900.400"
    }
    ipv4 = get_ipv4(ip)
    url = r'https://www.baidu.com/s?wd=%s' % ipv4
    result = requests.get(url=url, headers=headers, verify=False).text
    re_compile = re.compile("IP地址:&nbsp;%s</span>(.*?)</td></tr></table>" % ipv4, re.S)
    ip_location = re.findall(re_compile, result)
    if ip_location:
        ip_location = ip_location[0].replace("\t", "").replace("\n", "").replace(" ", "")
        ip_location = ip_location.replace("省", "·").replace("市", "").replace("电信", "").replace("联通", "").replace(
            "移动", "")
        return ip_location
    else:
        return None


if __name__ == "__main__":
    print(ip_location_baidu("106.11.153.104"))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-9-24 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档