写在前面
最近在知乎上看到一篇关于地铁数据的分析,该篇文章很全面的分析了大陆(包括澳门香港)有地铁城市的分布、线路、站点等信息,很有阅读价值。本篇文章是对该文中获取信息部分的一个更进,使用面向对象的方法实现其部分功能。
具体代码如下
用python的面向对象方式实现目标,代码已做注释,可供参考使用。本人技术有限,如有错误请指出。
import requests
from bs4 import BeautifulSoup
import json
"""
目标:爬取中国大陆地铁线路信息
要求:
①获取相关城市的地铁数量
②获取每个地铁站的名称
③写入文档
"""
class Subway(object):
def __init__(self):
# 构造url
self.url = "http://map.amap.com/subway/index.html?&1100"
# 使用老版本请求头
self.headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
# 获取数据
def get_data(self):
responses = requests.get(url=self.url, headers=self.headers)
# 返回str字符串类型
return responses.text
# 解析每个城市地铁信息(地铁数量,站点)
def parse_get_subway(self, ID, city, name):
# 拼接地铁信息的url
url = 'http://map.amap.com/service/subway?_1555502190153&srhdata=' + ID +