1.找到要查询的url
2.对信息进行分析
3.对信息进行处理
2.分析车站信息,发现每个车站信息以"@"分隔
url==inf=txt[:-2].split()[1:] stations= record =record.split(-1])]={:rList[1],:rList[2],:rList[3],:rList[4<span >#<span >print(stations[0])<span ><span >print(stations.get(2848))<span ><span >print(stations.values())<span ><span >3.判断查询条件是否存在,存在如果唯一则打印并跳出循环,不唯一则显示查询的所有的结果,提供选择,根据选择的信息打印出结果然后跳出循环,不存在则打印提示信息,重新输出
<span >while
<span > True:s1=input(<span >"<span >出发站:<span >"<span >)
flag=<span >0
result=<span >[]
<span >for station <span >in<span > stations.values():
<span >if s1 <span >in<span > station.values():
<span >#<span >print(station)
<span > result.append(station)
flag=1
<span >if<span > flag:
<span >break
<span >else<span >:
<span >print(<span >"<span >没有这个车站!<span >"<span >)
<span >print(<span >"<span >请重新输入!<span >"<span >)
<span >if len(result)==1<span >:
resultID=result[0][<span >"<span >ID<span >"<span >]
<span >print(<span >"<span >你输入的出发车站是%s,对应的车站ID是%s<span >"%(result[0][<span >"<span >cname<span >"<span >],resultID))
<span >else<span >:
<span >print(<span >"<span >你输入的条件比较模糊,请在以下站中进行选择:<span >"<span >)
<span >for i <span >in<span > range(len(result)):
<span >print(i+1,result[i][<span >"<span >cname<span >"],result[i][<span >"<span >ID<span >"<span >])
sel=int(input(<span >"<span >你的选择:<span >"))-1<span >
resultID=result[sel][<span >"<span >ID<span >"<span >]
<span >print(<span >"<span >你输入的出发车站是%s,对应的车站ID是%s<span >"%(result[sel][<span >"<span >cname<span >"<span >],resultID))
<span >while<span > True:
s2=input(<span >"<span >目的站:<span >"<span >)
flag2=<span >0
result2=<span >[]
<span >for station <span >in<span > stations.values():
<span >if s2 <span >in<span > station.values():
<span >#<span >print(station)
<span > result2.append(station)
flag2=1
<span >if<span > flag2:
<span >break
<span >else<span >:
<span >print(<span >"<span >没有这个车站!<span >"<span >)
<span >print(<span >"<span >请重新输入!<span >"<span >)
<span >if len(result2)==1<span >:
result2ID=result2[0][<span >"<span >ID<span >"<span >]
<span >print(<span >"<span >你输入的目的车站是%s,对应的车站ID是%s<span >"%(result2[0][<span >"<span >cname<span >"<span >],result2ID))
<span >else<span >:
<span >print(<span >"<span >你输入的条件比较模糊,请在以下站中进行选择:<span >"<span >)
<span >for i <span >in<span > range(len(result2)):
<span >print(i+1,result2[i][<span >"<span >cname<span >"],result2[i][<span >"<span >ID<span >"<span >])
sel2=int(input(<span >"<span >你的选择:<span >"))-1<span >
result2ID=result2[sel2][<span >"<span >ID<span >"<span >]
<span >print(<span >"<span >你输入的目的车站是%s,对应的车站ID是%s<span >"%(result2[sel][<span >"<span >cname<span >"<span >],result2ID))
<span >#<span >生成一条带查询的url(url在浏览器开发者模式查找)
qurl=<span >"<span >https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2019-01-14&leftTicketDTO.from_station=%s&leftTicketDTO.to_station=%s&purpose_codes=ADulT<span >"
<span >print(qurl %(resultID,result2ID))
运行效果如下:
===txt[:-2].split()[1= record =record.split(-1])]={:rList[1],:rList[4pyin=<span >[]
<span >for station <span >in stations.values(): <span >#<span >把获得的信息所有的"qp"所对应的值全部放到列表中(pyin)
pyin.append(station[<span >"<span >qp<span >"<span >])
npy=List(set(pyin)) <span >#<span >利用集合的去重特性对列表进行去掉重复项
npy.sort() <span >#<span >对列表进行排序
c=<span >{}
<span >for station <span >in stations.values(): <span >#<span >分别把所有的全拼当作键,值加入到新的字典当中
c[station[<span >"<span >qp<span >"]]=c.get(station[<span >"<span >qp<span >"],0)+1
<span >#<span >print(c)
c2=<span >[]
<span >for k,v <span >in c.items(): <span >#<span >判断字典的值是否大于1,大于则说明存在全拼相同的车站名
<span >if v>1<span >:
c2.append(k) <span >#<span >把满足条件的所有的全拼加入到新的列表中
<span >c2.sort()
<span >#<span >print(c2)
<span >for p <span >in c2: <span >#<span >遍历列表,打印出符合条件的车站
<span >print(p,end=<span >"<span >:<span >"<span >)
<span >for station <span >in<span > stations.values():
<span >if p==station[<span >"<span >qp<span >"<span >]:
<span >print(station[<span >"<span >cname<span >"])
运行效果如下:
总结以上是内存溢出为你收集整理的python爬虫之12306网站--车站信息查询全部内容,希望文章能够帮你解决python爬虫之12306网站--车站信息查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)