美文网首页大数据 爬虫Python AI Sql
Python根据用户IP判断所属城市 !

Python根据用户IP判断所属城市 !

作者: 14e61d025165 | 来源:发表于2019-07-29 14:48 被阅读1次

    事情源于7月以来,SEO销售额下降比较明显,老板让我想想办法提升SEO销售额。

    而销量=流量×转化率×客单价,客单价我这边没法控制,只能从流量和转化率两个方向入手了。但对SEO来讲,短时间大幅度提升SEO流量有点难,因此暂考虑从转化率入手。

    目前很大一部分流量来自于聚合页面,但聚合列表的排序不太合理,因此想着对聚合页列表排序做优化。初步设想是根据用户IP所在城市对列表页排序,使用户一进入页面就能看到当前城市的演出信息,降低用户选择和操作成本。

    Python资源共享群:484031800

    于是,问题转化为获取当前用户IP,根据IP判断用户所在城市,然后根据用户所在城市对列表页排序,优先展示用户当前城市的演出信息。

    我的SEO项目是使用Python web框架flask开发的,获取用户的IP很容易,但如何根据IP判断IP所属城市呢?

    网上搜索相关解决方法,有的方法是访问第三方网站接口来查询。显然不太合适,每次查询还要访问第三方网站会拖慢网站速度。做SEO的都知道,网站打开慢意味着什么。

    然后发现有第三方库可以实现这个需求,试用了下,判断比较准确,速度快且稳定。这个库是geolite2,pip install geolite2安装即可使用。以下是代码片段分享:

    from
    flask
    import
    request
    from
    geolite2
    import
    geolite2

    获取用户IP

    def
    get_real_ip
    ():
    headers
    =
    request
    .
    headers

    if
    headers
    .
    get
    (
    'X-Forwarded-For'
    ):
    ip
    =
    headers
    .
    get
    (
    'X-Forwarded-For'
    )

    elif
    headers
    .
    get
    (
    'X-Real-Ip'
    ):
    ip
    =
    headers
    .
    get
    (
    'X-Real-Ip'
    )

    else
    :
    ip
    =

    ''

    return
    ip

    根据IP判断所属城市

    def
    get_ip_city
    (
    ip
    ):
    reader
    =
    geolite2
    .
    reader
    ()

    try
    :
    newip
    =
    ip
    .
    split
    (
    ','
    )[
    0
    ]
    ip_city
    =
    reader
    .
    get
    (
    newip
    ).
    get
    (
    'city'
    ,

    {}).
    get
    (
    'names'
    ,

    {}).
    get
    (
    'zh-CN'
    ,

    '未知'
    )

    except
    :
    ip_city
    =

    '未知'

    return
    ip_city
    那这个方法对提升销售额有没有帮助呢?上线后对比两周数据,销售额提升了约20%。但后续仍待观察,是否能持续下去。

    相关文章

      网友评论

        本文标题:Python根据用户IP判断所属城市 !

        本文链接:https://www.haomeiwen.com/subject/vmebrctx.html