python爬取公交线路信息

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

二.导入库函数

import requests 
from lxml import etree

三.根据网页提取信息

python爬取公交线路信息_第1张图片
我们要分析网页从中获取线路线路分类的信息也从中提取个线路的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

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

python爬取公交线路信息_第2张图片

python爬取公交线路信息_第3张图片
python爬取公交线路信息_第4张图片

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('文件写入完成')

代码写完后我们运行一下效果如下
python爬取公交线路信息_第5张图片
如有不足请尽情指正
原创不易,若转载请注明出处,感谢大家~
喜欢我的可以点赞、关注、收藏

你可能感兴趣的:(笔记)