urllib2 实现简单爬取12306网站
来源:互联网 发布:p2p下载软件推荐 编辑:程序博客网 时间:2024/05/01 16:32
开发工具:python2.7
主要是用的库:urllib2
爬取对象:12306购票系统
1、首先我们的任务是选取合适的网页入口,打开12306官网:
我们先试试进入余票查询:
第一次进入这个网站我们发现报错了,在网址http处红色显示证书不符合要求,我们暂时忽略。点击查询按钮,这时候我们看到页面并没有变化。我们按F12进入开发者工具看看:
我们进入Network选项,再次点击查询发现下方显示拒绝访问,看来我们无法从这个接口进入网站。
我们返回之前的页面点击购票:
再次点击查询,这下我们看到了我们查询的结果,url=https://kyfw.12306.cn/otn/leftTicket/init。
然后我们用代码来抓取一下这个url:
import urllib2#我们定义一个函数来抓取这个网站def getList(): url='https://kyfw.12306.cn/otn/leftTicket/init' req = urllib2.urlopen(url) html = req.read()#获取网站源代码数据 #print html getList() #我们尝试打印出来看看
显示是一大长串的json文件。
print type(html)
type ‘str’
我们现在把str转换成python能处理的dict
import jsondict = json.loads(html)
下面我们通过F12开发者工具查看我们需要的车辆信息在什么地方。
通过一番查找我们发现我们需要的信息:
我们通过对比可以看到我们为难刚才打印出来的网页信息与我们在F12中找到的是吻合的。我们想要的信息都在data里的键值对里。
2、我们提取我们想要的信息:
import urllib2import sslimport jsonimport timessl._create_default_https_context = ssl._create_unverified_context#关闭证书验证#< > 是个对象 需要方法进行操作def getList(): req = urllib2.urlopen('https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2017-02-25&leftTicketDTO.from_station=CSQ&leftTicketDTO.to_station=CDW&purpose_codes=ADULT')#打开网页 html = req.read()#获取网站源代码数据 dict = json.loads(html)#把str转换成python能处理的dict return dict['data']list_s = getList()#for i in list_s: print i['queryLeftNewDTO']['station_train_code'] + '*********' + i['queryLeftNewDTO']['swz_num']+'*****' +i['queryLeftNewDTO']['start_time'] 打印出车辆信息、票数以及发车时间
ps:这里需要提到一点,我们在运行代码过程中可能无法打开网页,主要是证书无法识别的原因,我们用ssl库关掉证书认证就可以正常访问网页了。
运行结果:
3、实现电话短信提醒
4、完成验证登陆,自动购买车票
上面两点还没完成,待续。。。
0 0
- urllib2 实现简单爬取12306网站
- python urllib, urllib2实现登陆和简单爬取网页(个人坑点笔记)
- urllib2 爬取网页信息
- 简单的爬取网站
- Python运用urllib2和BeautifulSoup爬取网站ZOL桌面壁纸上的精美电脑壁纸
- python urllib2爬取网页,编码问题
- 爬取网页乱码 Python urllib2库
- python urllib2 爬取网页内容
- urllib2爬取淘宝上的json数据
- c简单实现爬取网页
- Java实现简单爬虫爬取天气预报
- Python 中利用urllib2简单实现网页抓取
- [python学习] 简单爬取图片网站图库中图片
- [python学习] 简单爬取图片网站图库中图片
- 简单的java爬取网站内容和url实例
- 从零基础认识爬虫-简单爬取tripadvisor网站
- urllib2的简单教程
- 爬取网站图片
- Canvas画图设置渐变色
- Git操作指南
- JQuery -- this 和 $(this) 的区别
- Action 中获取表单数据的三种方式
- 中山大学转专业过程及心得
- urllib2 实现简单爬取12306网站
- hdu 2012 素数判定
- Python高级数据处理与可视化(三)---- Matplotlib图像属性控制
- 2007年北理复试上机题
- C++之继承篇
- socket.io简单笔记1
- 简单的拍照dome
- Spring 源码分析(一) —— 迈向Spring之路
- 80. Remove Duplicates from Sorted Array II