python采集系统(小练手:爬取12306余票查询页面)
2018-01-25 17:22
204 查看
抽空去12306官网逛了一逛,发现直接爬余票是不是有点难啊哈哈哈,然后我发现了这样一个页面
进去页面之后是这样的
。。。。。。。
。。这个东西爬起来是不是很简单,而且这个页面是半小时更新一次的,其实也蛮有参考价值的,所以就决定是它了,先爬一个小页面练练手,废话不多说,因为第一次入爬虫的坑,所以大概花了半天的时间终于爬取成功。
首先第一步,要找到数据源,也就是要爬取的url地址,我用的是火狐,谷歌也一样,之前电脑重装了,其实我谷歌用的比较多,后来重装了电脑之后就一直用火狐了,打开F12,你会发现有这样一个url地址。
再继续打开,哇,这些不就是我们需要的数据嘛,很激动有木有
。。。
第二步,所以找到了数据源之后,当然是想办法把这些数据拿下来,这也是写爬虫最有意思的一步吧,所以我的想法是直接访问这个url,然后把拿到的数据处理一下,这个爬虫基本就写完了。
好了,到这一步,我已经把数据拿下来了,先感受一下
到这里,可能有同学已经这样了
什么鬼东西。。
冷静,我们先来分析一下这些数据,发现还是有迹可循的
红框的部分其实就是我们的余票信息有木有,然后发现黄色的框就是我们的位置信息,这样其实这个数据也不是很乱嘛,所以费什么话,提取数据吧
。。。。
最后的运行效果图:
顺带一提,我的python环境是eclipse+pydev。
进去页面之后是这样的
。。。。。。。
。。这个东西爬起来是不是很简单,而且这个页面是半小时更新一次的,其实也蛮有参考价值的,所以就决定是它了,先爬一个小页面练练手,废话不多说,因为第一次入爬虫的坑,所以大概花了半天的时间终于爬取成功。
首先第一步,要找到数据源,也就是要爬取的url地址,我用的是火狐,谷歌也一样,之前电脑重装了,其实我谷歌用的比较多,后来重装了电脑之后就一直用火狐了,打开F12,你会发现有这样一个url地址。
再继续打开,哇,这些不就是我们需要的数据嘛,很激动有木有
。。。
第二步,所以找到了数据源之后,当然是想办法把这些数据拿下来,这也是写爬虫最有意思的一步吧,所以我的想法是直接访问这个url,然后把拿到的数据处理一下,这个爬虫基本就写完了。
好了,到这一步,我已经把数据拿下来了,先感受一下
到这里,可能有同学已经这样了
什么鬼东西。。
冷静,我们先来分析一下这些数据,发现还是有迹可循的
红框的部分其实就是我们的余票信息有木有,然后发现黄色的框就是我们的位置信息,这样其实这个数据也不是很乱嘛,所以费什么话,提取数据吧
。。。。
# -*- coding: utf-8 -*- import urllib2 import json import re import ssl import time from bs4 import BeautifulSoup ssl._create_default_https_context = ssl._create_unverified_context def getList(): req = urllib2.Request('http://dynamic.12306.cn/otn/board/query') req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36') html = urllib2.urlopen(req).read() soup=BeautifulSoup(html,'lxml') #首先使用urllib2 和bs4两个库把页面下载下来 day1=time.strftime('%Y%m%d',time.localtime(time.time())) day2=int(time.strftime('%Y%m%d',time.localtime(time.time())))+1 day3=int(time.strftime('%Y%m%d',time.localtime(time.time())))+2 day4=int(time.strftime('%Y%m%d',time.localtime(time.time())))+3 #print day1,day2,day3,day4 #获取到当天的日期 soup = re.sub(re.compile('<html><body><p>|<\/p><\/body><\/html>'),"",str(soup)) #这块的正则是要去掉一些html元素 json_dict = json.loads(soup) print json_dict #遍历字典元素 for item in json_dict['data']['values']: print item.get("from_station_telecode_name"),item.get("to_station_telecode_name") print day1,"余票数量",item.get("values").get(str(day1)) print day2,"余票数量",item.get("values").get(str(day2)) print day3,"余票数量",item.get("values").get(str(day3)) print day4,"余票数量",item.get("values").get(str(day4)) print item return "" print getList()其实代码非常的简单,但是第一次入坑,写的不好,希望不要喷我。其实就是先访问这个url获取到我们需要的数据,然后正则去掉没有用的字符,然后最后遍历字典元素。
最后的运行效果图:
顺带一提,我的python环境是eclipse+pydev。
相关文章推荐
- Python脚本实现12306火车票查询系统
- Python脚本实现12306火车票查询系统
- 最新Python实现12306余票查询系统
- python 获取探针页面,自动查询公司出口
- Python Post and Get 登陆web后台系统并抓取页面
- python爬虫——正方教务系统成绩查询
- python实现域名系统(DNS)正向查询的方法
- 图书购买系统之登录注页面--查询数据库进行登录
- Python_模拟登录(爬取教务系统信息并制作查询界面)
- 从页面代码看火车票订票系统 12306的代码质量
- 高并发操作和查询的数据采集和查询系统的oracle数据库设计建议
- 基于python的旅游查询系统
- python3 实现12306查询余票
- python 查询12306班车情况
- python自动查询12306余票并发送邮箱提醒脚本
- Python 自动查询 12306 余票并发送邮箱提醒 (selenium)
- Python使用面向对象方式创建线程实现12306售票系统
- 12306火车票查询——Python
- 高并发操作和查询的数据采集和查询系统的oracle数据库设计建议
- PYTHON实现12306余票查询-2018年3月7日有效