一.爬取的网站是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('文件写入完成')
代码写完后我们运行一下效果如下
如有不足请尽情指正
原创不易,若转载请注明出处,感谢大家~
喜欢我的可以点赞、关注、收藏