Skip to content

Latest commit

 

History

History
26 lines (18 loc) · 2.1 KB

README.md

File metadata and controls

26 lines (18 loc) · 2.1 KB

12360Spider

基于 easy12306,感谢作者

区别在于 easy12306 基于 api 接口,而12306 的所有接口都不能直接爬了。 本项目基于 pyppeteer 模拟浏览器进行登录。验证码识别操作仍然使用 easy12306 项目的深度学习方法。

启动

本项目基于 python3.6

如果不考虑深度学习的识别过程,直接看效果的话,启动 zt12306Spider.py。

验证码识别

验证码识别基于深度学习算法,包括数据集的采集,预处理数据,训练算法,得到模型,等等。

运行顺序

  1. 运行pretreatment.py得到data.npz数据集,里面包含所有的labels的图片数据,以及所有待选择图片的whash值。其中,训练图片数据集下载较慢,或者下载一部分之后被封杀,可以到 kaggle 上下载,点击此处,然后将所有图片放入 imgs 文件夹下
  2. 保存好了data.npz后,运行baidu.py,从百度OCR的API去识别这些labels上面的文字。并保存到texts.log中。
  3. 运行get_top80_category.py,通过频次统计,发现其实12306的验证码图片就80类,获取这80类识别正确的labels图片与识别结果,作为texts.npz数据集,识别的80类(高频)放在了text_top_80.txt中。由于我爬取的图片只有8000多张,正确识别的只有4800张左右,识别的80类还是有点问题,具体的80类可以参考zhaipro/easy12306的repo,用这个文件替换text_top_80.txt
  4. 用生成的texts.npz作为数据集,跑mlearn.py文件,运行其中的main函数,得到models.v1.0.h5模型。
  5. category_images.py得到captcha.npz数据集。
  6. 运行mlearn_for_images.py得到图片识别模型。
  7. 运行zt12306Spider.py,运行前请填入你的用户名和密码。
  8. 等待程序运行,跳出浏览器,自动输入用户名密码后,识别验证码,并通过滑动验证,进入系统。