Python爬12306余票
Python爬12306余票
项目地址:https://github.com/ZWN2001/data_spider_12306
数据库课设使用的爬虫
半成品,需要根据todo自己改改
main.py查的是学生票
main2.py查的是成人票
爬虫教程在 here
一些问题的解答
为什么要分成人与学生
如果你进行请求就会发现默认(成人票)只能请求到近几个月的数据。
而学生票则可以请求到更多。
成人与学生爬虫的区别
区别主要在请求的url与使用的cookie上。
url会使用purpose_codes参数进行区分。
cookie上,学生票要比成人票的cookie严格很多,无法直接通过selenium获取,只能手动填写、更新。
成人票使用了selenium的无头浏览器,默认使用了谷歌浏览器。
cookie的结构
两种票的cookie都是由两部分组成的,一部分是固定的cookie数据,通过多次相应头的set_Cookie设置的,从浏览器中可以获取,学生票cookie还会对其中的一些属性进行修改,并且会添加加密过的fo属性。
另一部分是请求的行程信息,其中起点与终点的值为站名,站编码的形式并用escape编码,这一点在代码中有清晰的体现。
其他可能存疑的技术点
协程、aiohttp、asyncio、request,在教程里都有写
可能的其他问题
关于连接池
懒。
关于被ban
使用时很可能因为各种原因被ban,报错的网页很明显,是后端发现了爬虫,但是不影响cookie的使用,(仅使用aiohttp时会有这种问题),解决方案是在循环时添加一些sleep以避免被当成是服务拒绝攻击。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZWN's blog!
评论








