python外环是什么意思_爬取上海地铁站并且规划出行路线

本文介绍了如何利用Python爬取上海地铁站点信息,构建地铁线路图,并根据起点和终点规划出行路线。通过优化排序策略,实现了换乘次数最少的路径规划。
摘要由CSDN通过智能技术生成

源码源码:源码链接

需求和目标

爬取网站:上海地铁的百科词条

获取的爬虫数据结果保存样式如下

{

'莘庄站':

{'subway': ['上海地铁1号线', '上海地铁5号线'],

'neibour': ['外环路站', '春申路站']},

'莲花路站':

{'subway': ['上海地铁1号线'],

'neibour': ['外环路站', '锦江乐园站']}

}

爬取的数据保存中这种格式是为了方便后续处理

根据爬取的数据可以根据起点和终点规划出行路线

爬虫步骤:

爬取上海地铁的百科词条,获取到地铁线路的名称和链接

爬取地铁详情页,提取站点信息并保存

爬虫部分

class ShangHaiSubway:

def __init__(self):

self.headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'

}

self.url = 'https://baike.baidu.com/item/%E4%B8%8A%E6%B5%B7%E5%9C%B0%E9%93%81/1273732?fr=aladdin'

self.station_dict = defaultdict(list)

def get_xpath_obj(self, url):

'''根据url获取xpath对象'''

response = requests.get(url, headers=self.headers)

text = response.content.decode()

return etree.HTML(text)

def get_subways(self, xpath_obj):

'''解析xpath 对象,获取地铁的链接和地铁名称'''

subways = xpath_obj.xpath('//table[@log-set-param="table_view"][1]//tr/td//a')

for subway in subways:

name = subway.xpath('./text()')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值