任务介绍
无论是工作的需要,还是业余时间想对网上数据进行分析,爬虫都是我们必须过的一个基本关。本次任务就是在工作需要的基础上,需要我们对整个XX市的公交站点进行爬取,获取其经纬度信息,便于后续数据的OD分析。按理说这个数据应该是公交公司有的,但是历史数据信息涵盖量不全,便寄希望于百度地图能给我们提供更多的一点信息吧。话不多说,开始今天的简易爬虫教程。
工具准备
本次爬虫需要用到的工具:
- 软件:pycharm,anaconda3(python3.6),百度密钥,mysql数据库。
- python库:requests,requests,json,pymysql,time
百度api申请步骤:
1. 打开网页,输入百度地图开放平台,点击进入
2. 注册百度账号,并且滑动到页面最下方,点击申请密钥
3. 点击创建应用,应用类型选择浏览器端,其余信息可以随便填写,白名单填写*(英文半角)
4. 以上步骤变申请成功,查看应用,就有你所创建的应用ak了
开始动手
- 登录百度地图开放平台,选择开发文档中的web服务api
- api左侧为功能区,点击不同的功能区,右侧有详细解释,具体的接口使用方法在右侧的服务文档中,输入参数和输出参数都有详细解释。
- 通过api接口,我们已经可以得到返回的json数据格式的公交站点信息,想要在程序中得到数据,并解析到公交站点,我们需要引入前面准备的3个python的库
requests:利用url获取返回到的json数据
json:解析json数据
pymysql:用于存储到mysql数据库中(也可以不用,直接存到txt文档中)
import requests
import json
import pymysql
import time
- 本次爬虫采用矩形框搜索,需要定义矩形框的左下角坐标和右上角坐标,由于区域较大,可以将其分割成为多个区域.
left_bottom = [106.283337,29.263947]; # 设置区域左下角坐标(百度坐标系)
right_top = [106.753618,29.760811]; # 设置区域右上角坐标(百度坐标系)
part_n = 10; # 设置区域网格(10*10)
- url设置(前面api中可以得到url)、这里设置搜索关键字,ak采用前面申请的浏览器ak
url0 = 'http://api.map.baidu.com/place/v2/search?';
x_item = (right_top[0]-left_bottom[0])/part_n;
y_item = (right_top[1]-left_bottom[1])/part_n;
query = '公交站'; #搜索关键词设置
ak = '***********************'; #百度地图api信令
- 设置url的不同字段,利用requests.get&#x