本文实例为大家分享了python爬虫获取小区经纬度、地址的具体代码,供大家参考,具体内容如下

通过小区名称利用百度api可以获取小区的地址以及经纬度,但是由于api返回的值中的地址形式不同,所以可以首先利用小区名称进行一轮爬虫,获取小区的经纬度,然后再利用经纬度Reverse到小区的结构化的地址。另外小区名称如果是'...号‘,可以在爬虫开始之前在'号‘之后加一个'院‘,得到的精确度更高。这次写到程序更加便于二次利用,只需要给程序传递一个dataframe就可以坐等结果了。现在程序已经写好了,就等接下来在工作中看看效果如何了。

class GetAddressInfo:

def __init__(self,df):

import pandas

assert type(df) == pandas.core.frame.DataFrame and ('city' in df.columns) and ('name' in df.columns),\

'The dataframe is not vailid'

from bs4 import BeautifulSoup

from urllib import request

import re

import pandas as pd

import numpy as np

import urllib.parse as urp

self.__data__ = df

def get_address(self):

import numpy as np

self.__data__['小区经度'] = np.nan

self.__data__['小区纬度'] = np.nan

self.__data__['小区地址'] = np.nan

for i in self.__data__.index:

self.__data__.loc[i,'小区纬度'],self.__data__.loc[i,'小区经度'],self.__data__.loc[i,'小区地址'] =\

self.__get_neigbour_address__(self.__data__.loc[i,'name'],\

self.__data__.loc[i,'city'])

return self.__data__

def __lat__(self,res):

try:

return pd.to_numeric(re.findall('"lat":(.*)',res)[0].split(',')[0])

except:

return 0

def __lng__(self,res):

try:

return pd.to_numeric(re.findall('"lng":(.*)',res)[0])

except:

return 0

def __address__(self,res):

try:

return re.findall('"address":"(.*)",',res)[0]

except:

return 'None'

def __get_neigbour_address__(self,name,city):

my_ak = ##替换自己的ak

qurey = urp.quote(name)

tag = urp.quote('住宅区')

try:

url = 'http://api.map.baidu.com/place/v2/search?query='+qurey+'&tag='+tag+'&region='+urp.quote(city)+'&output=json&ak='+my_ak

req = request.urlopen(url)

res = req.read().decode()

lat = self.__lat__(res)

lng = self.__lng__(res)

address = self.__address__(res)

return lat,lng,address

except:

return 0,0,'None'

class ReverseGetAddress:

def __init__(self,data):

assert ('小区纬度' in data.columns) and ('小区经度' in data.columns) and ('name' in data.columns),\

'The DataFrame is not vailid'

from bs4 import BeautifulSoup

from urllib import request

import re

import pandas as pd

import numpy as np

import urllib.parse as urp

self.__data__ = data

def __get_address1__(self,url):

try:

req = request.urlopen(url)

res = req.read().decode()

address = re.findall('address":"(.*?)"',res)[0]

return address

except:

return 'None1'

def __to_string__(self,arr):

return str(arr)

def __get_address2__(self):

my_ak = ##替换自己的Ak

base_url1 = 'http://api.map.baidu.com/geocoder/v2/?callback=renderReverse'

base_url2 = '&location='

base_url3 = '&pois=0&radius=1&output=json&pois=1&ak='

url = base_url1+base_url2+self.__data__['小区纬度'].apply(self.__to_string__)+','\

+self.__data__['小区经度'].apply(self.__to_string__)+base_url3+my_ak

return url

def get_address(self):

url = self.__get_address2__()

self.__data__['小区地址'] = url.apply(self.__get_address1__)

return self.__data__

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: python爬虫获取小区经纬度以及结构化地址

本文地址: http://www.cppcns.com/jiaoben/python/248757.html

python爬虫结构化_python爬虫获取小区经纬度以及结构化地址相关推荐

  1. python爬虫什么结构好_python爬虫入门:爬虫基础了解一下 !! 盘它

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

  2. python爬虫的用途_Python爬虫的作用与地位(附python3教程+爬虫技术路线图)

    小编说:网络爬虫是一种伴随着互联网诞生与演化的"古老"的网络技术,随着互联网进入大数据时代,爬虫技术迎来了一波新的振兴浪潮. 本文通过企业内部与互联网两个场景向大家讲书爬虫发挥了哪 ...

  3. python窗口显示表格_Python爬虫之GUI图表

    关于Python爬虫系列的这篇文章我很早就想写了,但由于我前两周一直在研究vscode插件开发方面,就没去写文章.所幸目前vscode插件开发的知识了解的差不多了,是时候写了,哈哈.需要说明的是,我并 ...

  4. python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)

    本篇主页内容:match的基本使用,search的基本使用,findall,finditer的基本使用,匹配中文,贪婪与非贪婪模式 Python爬虫教程-19-数据提取-正则表达式(re) 正则表达式 ...

  5. python request url 转义_Python爬虫入门笔记

    来源:blog.csdn.net/weixin_44864260 爬虫四大步骤: 1.获取页面源代码 2.获取标签 3.正则表达式匹配 4.保存数据 1. 获取页面源代码 5个小步骤: 1.伪装成浏览 ...

  6. python爬虫的用途_python爬虫用途

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 专业点来说就是应用多台机器同时实现爬虫任务,这多台机器上的爬虫,就是称作分布式爬 ...

  7. python爬取网页内容_Python爬虫原理解析

    笔者公众号:技术杂学铺 笔者网站:mwhitelab.com 本文将从何为爬虫.网页结构.python代码实现等方面逐步解析网络爬虫. 1. 何为爬虫 如今互联网上存储着大量的信息. 作为普通网民,我 ...

  8. 如何用python爬股票数据_python爬虫股票数据,如何用python 爬虫抓取金融数据

    Q1:如何用python 爬虫抓取金融数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为 ...

  9. python爬虫电影信息_Python爬虫入门 | 爬取豆瓣电影信息

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

最新文章

  1. centos6.5 php5.2,Linux中PHP安装与配置(CentOS-6.5:php-5.2.13)
  2. 模拟 Codeforces Round #249 (Div. 2) C. Cardiogram
  3. adaboost和GBDT的区别以及xgboost和GBDT的区别
  4. matlab 二值化_撸了一份 ostu二值化,需要的小伙伴请拿走
  5. redis 相关操作
  6. datanode无法启动_Hadoop DataNode启动和初始化过程
  7. 一文看懂JUC之AQS机制
  8. Wget 命令用法详解
  9. tomcat的连接数与线程池
  10. 学习拾遗--用RadioButtonList 或者DropDownList 进行动态赋值问题
  11. python编程入门书籍-关于 Python 的经典入门书籍有哪些?
  12. 快速排序—三路快排 vs 双基准
  13. lopatkin俄大神精简中文系统Windows 10 Enterprise 2016 LTSB 14393.577 x86-x64 ZH-CN PIP
  14. solr为什么比MySQL快_Solr原理?为什么要用Solr?Solr为什么比较快?
  15. 深度学习损失函数 分类损失回归损失
  16. latex 琐粹记录
  17. redis 结合 spring
  18. MacOS High Sierra(10.13.6)上安装xcode10.2.1
  19. 语音处理 之 训练维护
  20. 如何通过命令提示符进入MySQL服务器

热门文章

  1. 图像仿射变换python实现
  2. [Python] 切片函数:silce()
  3. 吴恩达神经网络和深度学习-学习笔记-16-超参数的系统的调整方法
  4. mqtt安装使用教程。(基于rabbitmq插件,docker部署,k8s部署,python教程)
  5. python机器学习案例系列教程——CTR/CVR中的FM、FFM算法
  6. python数据存储系列教程——python中redis数据库操作:连接、增删查改、多级路径
  7. matlab2c使用c++实现matlab函数系列教程-sinh函数
  8. 1.4 高并发之线程和进程
  9. day 5 名片管理系统-文件版
  10. PHP文件可限速下载代码