资讯专栏INFORMATION COLUMN

中国所有省市区的ip经纬度接口

Flands / 3328人阅读

摘要:由于个人需要国内所有省市区的地址段和经纬度的对应关系,最好是数据库可以直接使用的数据源,经调研发现可以使用百度来实现这个功能,主要是找到所有的地址段然后调用查询,主要是用做异步爬虫来实现的,你可以使用百度开发者账号申请并发数从下载段,节约时

由于个人需要国内所有省市区的ip地址段和经纬度的对应关系,最好是数据库可以直接使用的数据源,经调研发现可以使用百度API来实现这个功能,主要是找到所有的ip地址段然后调用api 查询,

主要是用Tornado 做异步爬虫来实现的,
import time
import json
from datetime import timedelta
from bs4 import BeautifulSoup
import os
from tornado import httpclient, gen, ioloop, queues
from api import map_ip_region_provice

AK = "umG08TkpEwmRWkUPx4MaM0FGW3h4i4L"  # 你可以使用百度开发者账号申请
base_url = "http://api.map.baidu.com/location/ip?ak={1}&ip={0}"
IP_URL = "https://github.com/17mon/china_ip_list/blob/master/china_ip_list.txt"

concurrency = 20  # 并发数


def is_file_exist(result=None):
    if result:
        result = result
    else:
        result = []
    with open("iplist.txt", "w+") as ipfile:
        for i in result:
            ipfile.write(i)
            ipfile.write("
")
    return result


def get_iplist():
    """
    从github 下载ip 段
    """
    # check ip is exist, 节约时间
    result = list()
    flag = is_file_exist()
    if flag:
        return flag
    else:
        http_client = httpclient.HTTPClient()
        try:
            response = http_client.fetch(IP_URL)
            respone = response.body
        except httpclient.HTTPError as e:
            print("Error: " + str(e))
        except Exception as e:
            # Other errors are possible, such as IOError.
            print("Error: " + str(e))
        http_client.close()
        respone = BeautifulSoup(respone, "lxml")
        div = respone.find("table",
                           attrs={"class",
                                  "highlight tab-size js-file-line-container"})
        trs = div.find_all("td", attrs={"class": "blob-code blob-code-inner js-file-line"})
        for tr in trs:
            temp = tr.string
            result.append(temp)
        print("fetch ip .....")
        is_file_exist(result)

具体可以查看

https://fizblog.cn/blog?title...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41182.html

相关文章

  • 从地址字符串获取市区信息

    摘要:需求从手工填写的地址中,解析出省市区信息方法使用百度地图正逆地理编码虽然百度地图提供地点检索,但是是需要传入行政区信息的根据正地理编码服务接口将地址转换为经纬度,然后根据经纬度调用逆地理编码服务接口,得到结构化的行政区信息代码你的百度地图返 需求: 从手工填写的地址中,解析出省市区信息 方法 使用百度地图api正/逆地理编码PS: 虽然百度地图提供地点检索,但是是需要传入行政区信息的 ...

    MartinHan 评论0 收藏0
  • RageFrame 一个 Yii2 + AdminLET 免费开源多商户通用后台管理系统

    摘要:极致的插件机制,系统内的系统,安装和卸载不会对原来的系统产生影响强大的功能完全满足各阶段的需求,支持用户多端访问后台微信前台等,系统中的系统。多入口模式,多入口分为后台前端,微信,对内接口,对外接口,不同的业务,不同的设备,进入不同的入口。 RageFrame 2.0 为二次开发而生,让开发变得更简单 项目地址:https://github.com/jianyan74/... 前言 这...

    sunny5541 评论0 收藏0
  • RageFrame 一个 Yii2 + AdminLET 免费开源多商户通用后台管理系统

    摘要:极致的插件机制,系统内的系统,安装和卸载不会对原来的系统产生影响强大的功能完全满足各阶段的需求,支持用户多端访问后台微信前台等,系统中的系统。多入口模式,多入口分为后台前端,微信,对内接口,对外接口,不同的业务,不同的设备,进入不同的入口。 RageFrame 2.0 为二次开发而生,让开发变得更简单 项目地址:https://github.com/jianyan74/... 前言 这...

    Ali_ 评论0 收藏0
  • 持续更新免费API,做一个API搬运工

    摘要:为了方便广大的开发者,特此统计了网上诸多的免费,为您收集免费的接口服务,做一个的搬运工,以后会每月定时更新新的接口。将长段中文切词分开。 为了方便广大的开发者,特此统计了网上诸多的免费API,为您收集免费的接口服务,做一个api的搬运工,以后会每月定时更新新的接口。有些接口来自第三方,在第三方注册就可以成为他们的会员,免费使用他们的部分接口。 百度AccessToken:针对HTTP ...

    Shihira 评论0 收藏0

发表评论

0条评论

Flands

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<