基于python的POI数据爬取、处理和使用(一)

   对于刚入职的半年的“新人”,多听听领导的建议还是大有裨益的。我们主任就说,新人要首先熟悉一下单位的业务,以及单位有哪些数据。在工作中,我就尽可能的了解一下这些,直到,我发现了POI数据。单位采集POI数据主要有两种方式,一是外业采集,这种方式的问题是人力投入较大,工期较长,也因为这个原因,数据更新速度也会较慢。二是直接找互联网公司买,这种方式简单粗暴,有钱就好使,至于问题。。。就是花的钱多。于是,我想了想,能不能使用网络爬虫去爬POI数据,成本低,效果不一定差。虽然单位不差钱,也不一定能采用我的方式,不过学习一下也有好处。

  首先是开发环境的搭建,我用的是python,编译器为VSCode(至于原因,一是随意选的,二是。。觉得好看)。我之前没有python的开发经历,选python就是为了顺便学习一下,毕竟ARCGIS现在对python的支持越来越好。

  然后进入爬虫阶段。我是小白,用的是urllib以及beautifulsoup。查看目标网页,发觉要爬POI数据,需要走如下几个步骤。

 1 在每一个列表页,爬取每一条POI数据对应的html页面

 2 进入每一条POI数据对应的html页面爬取需要的信息,如地址、名称、坐标等。

 3 将结果写入mysql数据库

思路确定了,开始写代码,第一个demo测试很成功,50条POI数据很快就写入了数据库。但是,往下走,问题就出来了,第一,速度好慢,n秒一条的速度,20几万的数据,要爬多久简单一算就知道了&#x

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
爬取POI数据,你可以使用Python中的requests和BeautifulSoup库。以下是一个简单的步骤: 1. 选择一个POI数据源,例如高德地图或百度地图,并确定你要爬取的城市和分类。 2. 使用requests库向该数据源发送请求,并传递城市和分类参数。例如,你可以使用以下代码向高德地图发送请求: ```python import requests city = '北京市' category = '餐饮服务' url = f'https://restapi.amap.com/v3/place/text?key=你的高德地图API密钥&keywords={category}&city={city}&offset=25&page=1&extensions=all' response = requests.get(url) ``` 在这个例子中,你需要将`你的高德地图API密钥`替换为你自己的API密钥。 3. 解析响应数据。如果响应是JSON格式的,你可以使用Python的json库将其转换为Python对象。如果响应是HTML格式的,你可以使用BeautifulSoup库解析它。例如,如果你要爬取百度地图的POI数据,你可以使用以下代码: ```python from bs4 import BeautifulSoup city = '北京市' category = '餐饮' url = f'https://map.baidu.com/?qt=s&wd={category}&c={city}&rn=10&pn=0&ie=utf-8&oue=1&from=webmap&da_par=direct' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') items = soup.select('div[class="search-item"]') ``` 在这个例子中,`select`方法用于选择HTML中具有`class`属性为`search-item`的元素。 4. 提取所需的数据。一旦你解析了响应数据,你需要从中提取所需的POI数据。这通常涉及到使用一些字符串操作,例如查找特定的HTML标记或分离特定的JSON键。例如,如果你要从高德地图的响应中提取POI的名称和坐标,你可以使用以下代码: ```python import json data = json.loads(response.text) pois = data['pois'] for poi in pois: name = poi['name'] location = poi['location'] print(name, location) ``` 在这个例子中,我们首先将响应数据转换为Python对象,然后从中提取`pois`键的值,并遍历每个POI,提取其名称和坐标。 希望这能帮到你开始爬取POI数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值