python爬取公交线路信息

该博客介绍了一种使用Python的requests和lxml库从8684网站爬取并解析城市公交线路信息的方法。首先,通过requests获取网页内容,然后使用XPath提取线路分类和具体线路URL。接着,遍历每个线路页面,提取运行时间、线路信息、公交号、票价、站台等详细信息,并存储为字典。最后,将所有信息写入本地文件。博客提供了完整的代码示例,展示了数据爬取和处理的过程。
摘要由CSDN通过智能技术生成

一.爬取的网站是8684,从这个网站我们可以查询到很多城市的公交线路信息。我们主要是用requests库和xpath对网页进行解析。

二.导入库函数

import requests 
from lxml import etree

三.根据网页提取信息

在这里插入图片描述
我们要分析网页从中获取线路线路分类的信息也从中提取个线路的URL链接

def request_html(url):
	sort = requests.get(url = url,headers = headers)
	tree = etree.HTML(sort.text)
	#提取线路分类信息
	route_list = tree.xpath("//div[@class='pl10'][3]/div/a/@href")
	#print(sort)
	route_url1 = []
	for route in route_list:
		r = url + route
		route_url1.append(r)
	return route_url1

根据分类我们在进入一个具体的线路页面,提取改页面运行线路信息及各种公交的运行信息

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

def bus_route(list):
	bus_route = []
	for route in list:
		sort = requests.get(url = route,headers = headers)
		tree = etree.HTML(sort.text)
		line_list = tree.xpath('//div[@class="list clearfix"]/a/@href')
		#线路分类
		route = tree.xpath('//span[@class="cr_crumbs_txt"]/text()')
		print('搜索%s'%route)
		for li in line_list:
			route_2url = url + li
			#print(route_2url)
			rou = requests.get(url = route_2url,headers = headers)
			tree = etree.HTML(rou.text)
			#线路运行车辆信息
			bus = tree.xpath('//div[@class="info"]/h1[@class="title"]/text()')
			#运行时间
			time = tree.xpath('//div[@class="info"]/ul/li[1]/text()')
			#票价
			fares =tree.xpath('//div[@class="info"]/ul/li[2]/text()')
			#站台正
			platform1 =tree.xpath('//div[@class="bus-lzlist mb15"][1]/ol/li/a/text()')
			#站台反
			platform2 =tree.xpath('//div[@class="bus-lzlist mb15"][2]/ol/li/a/text()')
			#末班车时间
			last_time = tree.xpath('//div[@class="change-info mb20"]/text()')
			#用字典收录以上各种信息
			a={ "运行时间":time ,
			"线路信息":route,
			"公交号": bus,
			"票价":fares,
			"正向站台":platform1,
			"反向站台":platform2,
			"末班车时间":last_time}						
			bus_route.append(a)		
		print('搜索%s完成'%route)
	return bus_route

获取完各种信息后我们写入本地文件进行保存

def text_save(data):
	fp = open('武汉公交信息.txt','w',encoding = 'utf-8')
	for i in data:
		fp.write(str(i) + '\n')
	fp.close()
	print('文件写入完成')

代码写完后我们运行一下效果如下
在这里插入图片描述
如有不足请尽情指正
原创不易,若转载请注明出处,感谢大家~
喜欢我的可以点赞、关注、收藏

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值