python小爬虫(12306火车票)

来源:互联网 发布:中兴手机mac地址 编辑:程序博客网 时间:2024/06/06 07:38
起初不知道爬虫是什么...然后上网搜了一下,通俗的将爬虫的目的就是从网页上拉取信息...网上介绍最多的是用python写爬虫,然后我就去看了看python的爬虫,写了一个小小的12306火车票的爬虫(本人用的是python3,工具是pycharm2017.3)....

步骤:
1. 首先要写导入三个包(BeautifulSoup,requests,json)
2. 从浏览器(本人使用的是360极速浏览器)中获取访问请求的url
这里写图片描述
3. `from bs4 import BeautifulSoup
import requests
import json
import time

# 处理访问请求的urldef setStation(from_station,to_station,queryDate,purpose_codes):url='https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=%s&leftTicketDTO.from_station=%s&leftTicketDTO.to_station=%s&purpose_codes=%s'%(queryDate,from_station,to_station,purpose_codes)return url# 处理页面上返回的数据,把json数据截取出来def getList(url):wb_data = requests.get(url)html = wb_data.contentsoup = BeautifulSoup(html, 'lxml')data = soup.findAll('p')for letter in data:    t = letter.textreturn tdef sendToPhone(text):    passif __name__ == '__main__':# 出发地from_station = 'NUH'  #南通# 目的地to_station = 'AFH'    #盐城# 出发日期queryDate = '2017-12-20'purpose_codes = 'ADULT'yw_Count = 0yz_Count = 0url = setStation(from_station, to_station, queryDate, purpose_codes)# 进行get请求 获取数据text = ''try:   aa = getList(url)   text = json.loads(aa)   p = text['data']   Data = p['result']   print(Data)   bHaveTicket = Trueexcept Exception as e:   print('没有查询到车辆信息')   bHaveTicket = False  # 解析车辆信息  if bHaveTicket:      info = ''      for index in range(0, len(Data)):      sResult = Data[index]      # 车次      station = Data[index].split('|')[3]      # 出发时间      departTime = Data[index].split('|')[8]      # 到达时间      arriverTime = Data[index].split('|')[9]      # 用时      userTime = Data[index].split('|')[10]      # 软卧      way_22 = Data[index].split('|')[22]      if(way_22 == ''):           way_22 = '无'      # 无座      way_25 = Data[index].split('|')[25]      if(way_25 == ''):           way_25 = '无'      # 硬卧      way_27 = Data[index].split('|')[27]      if(way_27 == ''):           way_27 = '无'      # 硬座      way_28 = Data[index].split('|')[28]      if(way_28 == ''):             way_28 = '无'      textmp = '车次: %s, 出发时间:%s,到达时间:%s,历时:%s,软卧:%s,无座:%s,硬卧:%s,硬座:%s \n'% (station, departTime,arriverTime,userTime,way_22,way_25,way_27,way_28)      info = info + textmp      print(info)      print('检测时间: %s' % time.strftime('%Y-%m-%d %H:%S:%M'))` 

4. 显示结果:
车次: K8600, 出发时间:11:05,到达时间:13:56,历时:02:51,软卧:无,无座:无,硬卧:无,硬座:无
车次: K564, 出发时间:12:58,到达时间:15:01,历时:02:03,软卧:无,无座:无,硬卧:无,硬座:有
车次: Z140, 出发时间:18:20,到达时间:20:08,历时:01:48,软卧:无,无座:无,硬卧:无,硬座:有
车次: Z52, 出发时间:18:31,到达时间:20:36,历时:02:05,软卧:无,无座:无,硬卧:无,硬座:有
检测时间: 2017-12-20 10:58:18

(注:python初学者,不足请多多指教!!!)

谢谢!!!

原创粉丝点击