高德地图python爬虫 商家_Python爬虫练习:爬取高德地图地铁线路及站点数据

本文展示了如何使用Python爬虫从高德地图获取地铁线路和站点的数据。通过发送HTTP请求,解析HTML和JSON响应,提取所需信息,并将结果保存到文件中。
摘要由CSDN通过智能技术生成

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:Darcy频道

# coding=utf-8

import requests

import time

import json

import ast

import os

import utils

from lxml import etree

PAGE_URL = 'http://map.amap.com/subway/index.html?&1100'

DATA_URL = 'http://map.amap.com/service/subway?srhdata='

HEADER = {

"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}

def fetchAllCity(url, header):

r = requests.get(url, header)

html = r.content

element = etree.HTML(html)

options = element.xpath("//a[contains(@class, 'city')]")

cities = []

for option in options:

city = {

'id': option.get('id'),

'name': option.get('cityname'),

'text': option.text

}

cities.append(city)

return cities

def parseCityData(citys):

lw = open('./lwkt.txt', 'w')

lw.write('wkt' + '\n')

pw = open('./pwkt.txt', 'w')

pw.write('wkt' + '\n')

for city in citys:

parseCityPointFromApi(city, lw, pw)

def parseCityPointFromApi(city, lw, pw):

url = DATA_URL + "{}_drw_{}.json".format(city['id'], city['name'])

print(url)

json_str = requests.get(url).text

res = json.loads(json_str)

res = res['l']

for r in res:

st = r['st']

coords = []

for s in st:

_coords = s.get('sl', '').split(',')

coords.append(_coords)

pwkt = '"POINT ({} {})"'.format(_coords[0], _coords[1])

pw.write(pwkt + '\n')

new_coords = ','.join(['%s %s' % (coord[0], coord[1]) for coord in coords])

lwkt = '"LINESTRING(%s)"' % new_coords

lw.write(lwkt + '\n')

def main():

cities = fetchAllCity(PAGE_URL, HEADER)

print(cities)

parseCityData(cities)

if __name__ == '__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值